66 lines
1.4 KiB
Go
66 lines
1.4 KiB
Go
package middleware
|
|
|
|
import (
|
|
"base-framework/pkg/config"
|
|
"base-framework/pkg/router"
|
|
"base-framework/pkg/utils"
|
|
"base-framework/pkg/utils/response"
|
|
"errors"
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
func Auth() router.HandlerFunc {
|
|
return func(c *router.Context) {
|
|
tokenHeader := c.Header("Authorization")
|
|
userIdHeader := c.Header("user_id")
|
|
orgIDHeader := c.Header("org_id")
|
|
|
|
// 缺少登录信息
|
|
if tokenHeader == "" || userIdHeader == "" || orgIDHeader == "" {
|
|
response.Error(c).Code(response.CodeNoLogin).Send()
|
|
return
|
|
}
|
|
|
|
// Bearer token 格式校验
|
|
parts := strings.Fields(tokenHeader)
|
|
if len(parts) != 2 || strings.ToLower(parts[0]) != "Bearer" {
|
|
response.Error(c).Code(response.CodeInvalidToken).Send()
|
|
return
|
|
}
|
|
|
|
// 解析 token
|
|
tokenStr := parts[1]
|
|
claims, err := utils.VerifyToken(tokenStr)
|
|
if err != nil {
|
|
switch {
|
|
case errors.Is(err, utils.ErrTokenExpired):
|
|
response.Error(c).Code(response.CodeLoginExpired).Send()
|
|
default:
|
|
response.Error(c).Code(response.CodeInvalidToken).Send()
|
|
}
|
|
return
|
|
}
|
|
|
|
// user_id 校验
|
|
if claims.UserID != userIdHeader {
|
|
response.Error(c).Code(response.CodeInvalidToken).Send()
|
|
return
|
|
}
|
|
|
|
// org_id 校验
|
|
if claims.OrgID != orgIDHeader {
|
|
response.Error(c).Code(response.CodeInvalidToken).Send()
|
|
return
|
|
}
|
|
|
|
configs := config.GetDBConfigs()
|
|
|
|
for k := range configs {
|
|
fmt.Println(k)
|
|
}
|
|
|
|
c.Next()
|
|
}
|
|
}
|