feat(middlewares): 添加认证中间件以处理JWT授权

This commit is contained in:
2025-12-30 18:06:16 +08:00
parent 2c633dac0f
commit d87eac7d94
3 changed files with 31 additions and 3 deletions

View File

@@ -5,5 +5,7 @@ func (r *Routes) Path() string {
} }
func (r *Routes) Middlewares() []any { func (r *Routes) Middlewares() []any {
return nil return []any{
r.middlewares.Auth,
}
} }

View File

@@ -5,5 +5,7 @@ func (r *Routes) Path() string {
} }
func (r *Routes) Middlewares() []any { func (r *Routes) Middlewares() []any {
return []any{} return []any{
r.middlewares.Auth,
}
} }

View File

@@ -1,8 +1,12 @@
package middlewares package middlewares
import ( import (
log "github.com/sirupsen/logrus" "quyun/v2/app/errorx"
"quyun/v2/pkg/consts"
"quyun/v2/providers/jwt" "quyun/v2/providers/jwt"
"github.com/gofiber/fiber/v3"
log "github.com/sirupsen/logrus"
) )
// Middlewares provides reusable Fiber middlewares shared across modules. // Middlewares provides reusable Fiber middlewares shared across modules.
@@ -19,3 +23,23 @@ func (f *Middlewares) Prepare() error {
f.log = log.WithField("module", "middleware") f.log = log.WithField("module", "middleware")
return nil return nil
} }
func (m *Middlewares) Auth(ctx fiber.Ctx) error {
authHeader := ctx.Get("Authorization")
if authHeader == "" {
return ctx.Next()
}
claims, err := m.jwt.Parse(authHeader)
if err != nil {
return errorx.ErrUnauthorized.WithCause(err).WithMsg("Invalid token")
}
// Set Context
ctx.Locals(consts.CtxKeyUser, claims.UserID)
if claims.TenantID > 0 {
ctx.Locals(consts.CtxKeyTenant, claims.TenantID)
}
return ctx.Next()
}