MW usage refactor
This commit is contained in:
parent
229eebcf66
commit
21b54c4167
9 changed files with 98 additions and 48 deletions
|
|
@ -3,8 +3,6 @@ package router
|
|||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"merch-api/internal/user"
|
||||
"merch-api/pkg/authCheck"
|
||||
"net"
|
||||
"net/http"
|
||||
|
||||
|
|
@ -14,22 +12,32 @@ import (
|
|||
ginSwagger "github.com/swaggo/gin-swagger"
|
||||
)
|
||||
|
||||
const pkgLogHeader string = "Router |"
|
||||
const (
|
||||
tokenCookieName string = "sessionToken"
|
||||
pkgLogHeader string = "Router |"
|
||||
)
|
||||
|
||||
type Deps struct {
|
||||
Host string
|
||||
Port string
|
||||
Prefix string
|
||||
GinMode string
|
||||
UserProvider user.Provider
|
||||
AuthProvider authCheck.AuthChecker
|
||||
UserProvider UserProvider
|
||||
AuthProvider AuthChecker
|
||||
ServiceId int32
|
||||
}
|
||||
|
||||
type Router struct {
|
||||
srv *http.Server
|
||||
engine *gin.Engine
|
||||
prefix string
|
||||
srv *http.Server
|
||||
engine *gin.Engine
|
||||
prefix string
|
||||
providers providers
|
||||
}
|
||||
|
||||
type providers struct {
|
||||
userProvider UserProvider
|
||||
authChecker AuthChecker
|
||||
serviceId int32
|
||||
}
|
||||
|
||||
func NewRouter(deps Deps) *Router {
|
||||
|
|
@ -57,8 +65,6 @@ func NewRouter(deps Deps) *Router {
|
|||
|
||||
engine.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||
|
||||
engine.Use(authMW(deps.UserProvider, deps.AuthProvider, deps.ServiceId))
|
||||
|
||||
return &Router{
|
||||
srv: &http.Server{
|
||||
Addr: net.JoinHostPort(deps.Host, deps.Port),
|
||||
|
|
@ -66,6 +72,11 @@ func NewRouter(deps Deps) *Router {
|
|||
},
|
||||
engine: engine,
|
||||
prefix: deps.Prefix,
|
||||
providers: providers{
|
||||
userProvider: deps.UserProvider,
|
||||
authChecker: deps.AuthProvider,
|
||||
serviceId: deps.ServiceId,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -82,3 +93,10 @@ func (r *Router) Shutdown(ctx context.Context) error {
|
|||
func (r *Router) BaseGroup() *gin.RouterGroup {
|
||||
return r.engine.Group(fmt.Sprintf("%v/", r.prefix))
|
||||
}
|
||||
|
||||
func (r *Router) MWSet() *Middlewares {
|
||||
return &Middlewares{
|
||||
AuthMW: AuthMW(r.providers.userProvider, r.providers.authChecker, r.providers.serviceId),
|
||||
RegMW: RegisterMW(r.providers.authChecker, r.providers.serviceId),
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,23 +3,35 @@ package router
|
|||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"merch-api/internal/user"
|
||||
"merch-api/pkg/authCheck"
|
||||
"merch-api/pkg/responses"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func authMW(up user.Provider, auth authCheck.AuthChecker, serviceId int32) gin.HandlerFunc {
|
||||
log.Debug("Auth Middleware enabled")
|
||||
type DepsMW struct {
|
||||
UserProv UserProvider
|
||||
AuthProv AuthChecker
|
||||
ServiceId int32
|
||||
}
|
||||
|
||||
type Middlewares struct {
|
||||
AuthMW gin.HandlerFunc
|
||||
RegMW gin.HandlerFunc
|
||||
}
|
||||
|
||||
func AuthMW(up UserProvider, ap AuthChecker, sid int32) gin.HandlerFunc {
|
||||
log.Debug("Auth Middlewares enabled")
|
||||
return func(c *gin.Context) {
|
||||
cookie, err := c.Cookie("sessionToken")
|
||||
cookie, err := c.Cookie(tokenCookieName)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusUnauthorized, responses.Unauthorized{Error: err.Error()})
|
||||
c.Abort()
|
||||
return
|
||||
}
|
||||
|
||||
userUuid, err := auth.VerifySession(c, cookie, serviceId)
|
||||
userUuid, err := ap.VerifySession(c, cookie, sid)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusUnauthorized, responses.Unauthorized{Error: err.Error()})
|
||||
c.Abort()
|
||||
}
|
||||
|
||||
userId, err := up.GetUserId(c, userUuid)
|
||||
if err != nil {
|
||||
|
|
@ -33,3 +45,24 @@ func authMW(up user.Provider, auth authCheck.AuthChecker, serviceId int32) gin.H
|
|||
c.Next()
|
||||
}
|
||||
}
|
||||
|
||||
func RegisterMW(ap AuthChecker, sid int32) gin.HandlerFunc {
|
||||
log.Debug("Auth Middlewares enabled")
|
||||
return func(c *gin.Context) {
|
||||
cookie, err := c.Cookie(tokenCookieName)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusUnauthorized, responses.Unauthorized{Error: err.Error()})
|
||||
c.Abort()
|
||||
return
|
||||
}
|
||||
|
||||
userUuid, err := ap.VerifySession(c, cookie, sid)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusUnauthorized, responses.Unauthorized{Error: err.Error()})
|
||||
c.Abort()
|
||||
}
|
||||
|
||||
c.Set("userUuid", userUuid)
|
||||
c.Next()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue