Merge pull request '[FEATURE] Adding auth middleware' (#4) from feature/security into dev
Reviewed-on: winter-access/backend_nam#4
This commit is contained in:
commit
3b69262a87
|
|
@ -2,6 +2,7 @@ package controller
|
|||
|
||||
import (
|
||||
"net/http"
|
||||
"users_management/m/middleware"
|
||||
"users_management/m/model/dto/req"
|
||||
"users_management/m/usecase"
|
||||
"users_management/m/utils/common"
|
||||
|
|
@ -17,10 +18,13 @@ type BackboneController struct {
|
|||
|
||||
func (bc *BackboneController) Route() {
|
||||
rg := bc.rg.Group("/backbone")
|
||||
rg.Use(middleware.AuthMiddleware())
|
||||
{
|
||||
rg.GET("", bc.GetBackbone())
|
||||
rg.POST("", bc.CreateBackbone())
|
||||
rg.GET("/:uuid", bc.GetBackboneByID())
|
||||
rg.PUT("/:uuid", bc.UpdateBackbone())
|
||||
}
|
||||
}
|
||||
|
||||
func NewBackboneController(bu usecase.BackboneUseCase, rg *gin.RouterGroup) *BackboneController {
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package controller
|
|||
|
||||
import (
|
||||
"net/http"
|
||||
"users_management/m/middleware"
|
||||
"users_management/m/model/dto/req"
|
||||
"users_management/m/usecase"
|
||||
"users_management/m/utils/common"
|
||||
|
|
@ -17,10 +18,13 @@ type DevicePortController struct {
|
|||
|
||||
func (dc *DevicePortController) Route() {
|
||||
rg := dc.rg.Group("/device-port")
|
||||
rg.Use(middleware.AuthMiddleware())
|
||||
{
|
||||
rg.GET("", dc.GetDevicePort())
|
||||
rg.POST("", dc.CreateDevicePort())
|
||||
rg.GET("/:uuid", dc.GetDevicePortByID())
|
||||
rg.PUT("/:uuid", dc.UpdateDevicePort())
|
||||
}
|
||||
}
|
||||
|
||||
func NewDevicePortController(du usecase.DevicePortUseCase, rg *gin.RouterGroup) *DevicePortController {
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package controller
|
|||
|
||||
import (
|
||||
"net/http"
|
||||
"users_management/m/middleware"
|
||||
"users_management/m/model/dto/req"
|
||||
"users_management/m/usecase"
|
||||
"users_management/m/utils/common"
|
||||
|
|
@ -17,10 +18,13 @@ type DeviceController struct {
|
|||
|
||||
func (dc *DeviceController) Route() {
|
||||
rg := dc.rg.Group("/devices")
|
||||
rg.Use(middleware.AuthMiddleware())
|
||||
{
|
||||
rg.POST("", dc.CreateDevice())
|
||||
rg.GET("", dc.GetAllDevices())
|
||||
rg.GET("/:uuid", dc.GetDeviceByID())
|
||||
rg.PUT("/:uuid", dc.UpdateDevice())
|
||||
}
|
||||
}
|
||||
|
||||
func NewDeviceController(du usecase.DeviceUseCase, rg *gin.RouterGroup) *DeviceController {
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package controller
|
|||
|
||||
import (
|
||||
"net/http"
|
||||
"users_management/m/middleware"
|
||||
"users_management/m/model/dto/req"
|
||||
"users_management/m/usecase"
|
||||
"users_management/m/utils/common"
|
||||
|
|
@ -17,10 +18,13 @@ type FishboneController struct {
|
|||
|
||||
func (fc *FishboneController) Route() {
|
||||
rg := fc.rg.Group("/fishbone")
|
||||
rg.Use(middleware.AuthMiddleware())
|
||||
{
|
||||
rg.GET("", fc.GetFishbone())
|
||||
rg.POST("", fc.CreateFishbone())
|
||||
rg.GET("/:uuid", fc.GetFishboneByID())
|
||||
rg.PUT("/:uuid", fc.UpdateFishbone())
|
||||
}
|
||||
}
|
||||
|
||||
func NewFishboneController(fu usecase.FishboneUseCase, rg *gin.RouterGroup) *FishboneController {
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package controller
|
|||
|
||||
import (
|
||||
"net/http"
|
||||
"users_management/m/middleware"
|
||||
"users_management/m/model/dto/req"
|
||||
"users_management/m/usecase"
|
||||
"users_management/m/utils/common"
|
||||
|
|
@ -17,10 +18,13 @@ type TowerController struct {
|
|||
|
||||
func (tc *TowerController) Route() {
|
||||
rg := tc.rg.Group("/tower")
|
||||
rg.Use(middleware.AuthMiddleware())
|
||||
{
|
||||
rg.GET("", tc.GetTower())
|
||||
rg.POST("", tc.CreateTower())
|
||||
rg.GET("/:uuid", tc.GetTowerByID())
|
||||
rg.PUT("/:uuid", tc.UpdateTower())
|
||||
}
|
||||
}
|
||||
|
||||
func NewTowerController(tu usecase.TowerUseCase, rg *gin.RouterGroup) *TowerController {
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import (
|
|||
"users_management/m/config"
|
||||
"users_management/m/delivery/controller"
|
||||
"users_management/m/manager"
|
||||
"users_management/m/middleware"
|
||||
"users_management/m/utils/common"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
|
|
@ -43,11 +44,14 @@ func NewServer() *Server {
|
|||
func (s *Server) setupController() {
|
||||
rg := s.engine.Group("/api/v1")
|
||||
controller.NewUsersController(s.ucManager.NewUserUsecase(), s.ucManager.NewAuthUsecase(),rg).Route()
|
||||
rg.Use(middleware.AuthMiddleware())
|
||||
{
|
||||
controller.NewDeviceController(s.ucManager.NewDeviceUsecase(), rg).Route()
|
||||
controller.NewBackboneController(s.ucManager.NewBackboneUsecase(), rg).Route()
|
||||
controller.NewFishboneController(s.ucManager.NewFishboneUsecase(), rg).Route()
|
||||
controller.NewTowerController(s.ucManager.NewTowerUsecase(), rg).Route()
|
||||
controller.NewDevicePortController(s.ucManager.NewDevicePortUsecase(), rg).Route()
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Server) Run() {
|
||||
|
|
|
|||
1
go.mod
1
go.mod
|
|
@ -15,6 +15,7 @@ require (
|
|||
github.com/bytedance/sonic v1.12.8 // indirect
|
||||
github.com/bytedance/sonic/loader v0.2.3 // indirect
|
||||
github.com/cloudwego/base64x v0.1.5 // indirect
|
||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect
|
||||
github.com/gabriel-vasile/mimetype v1.4.8 // indirect
|
||||
github.com/gin-contrib/sse v1.0.0 // indirect
|
||||
github.com/go-playground/locales v0.14.1 // indirect
|
||||
|
|
|
|||
|
|
@ -0,0 +1,56 @@
|
|||
package middleware
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"users_management/m/utils/common"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func AuthMiddleware() gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
token := c.GetHeader("Authorization")
|
||||
|
||||
if token == "" {
|
||||
common.ErrorResponses(c, http.StatusUnauthorized, "authorization token required")
|
||||
c.Abort()
|
||||
return
|
||||
}
|
||||
|
||||
token = strings.TrimPrefix(token, "Bearer ")
|
||||
|
||||
c.Set("token", token)
|
||||
|
||||
req, err := http.NewRequest("POST", "https://demo.api-hrm.winteraccess.id/api/v2/auth/me", nil)
|
||||
|
||||
if err != nil {
|
||||
common.ErrorResponses(c, http.StatusInternalServerError, err.Error())
|
||||
c.Abort()
|
||||
return
|
||||
}
|
||||
|
||||
req.Header.Set("Authorization", "Bearer "+token)
|
||||
req.Header.Set("Accept", "application/json")
|
||||
|
||||
client := &http.Client{}
|
||||
|
||||
resp, err := client.Do(req)
|
||||
if err != nil {
|
||||
common.ErrorResponses(c, http.StatusInternalServerError, err.Error())
|
||||
c.Abort()
|
||||
return
|
||||
}
|
||||
|
||||
defer resp.Body.Close()
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
common.ErrorResponses(c, http.StatusUnauthorized, "Unauthroized")
|
||||
c.Abort()
|
||||
return
|
||||
}
|
||||
|
||||
c.Next()
|
||||
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue