m
This commit is contained in:
1 parent
76a6c81af2
commit
b19d083031
68 files changed
+3889
-343
No files matched your search
@@ -0,0 +1,80 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"base-framework/pkg/config"
|
||||
"base-framework/pkg/reponse"
|
||||
"base-framework/pkg/router"
|
||||
"base-framework/pkg/utils/jwt"
|
||||
"errors"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func Auth() router.HandlerFunc {
|
||||
return func(c *router.Context) {
|
||||
|
||||
tokenHeader := c.Header("Authorization")
|
||||
userIdHeader := c.Header("userId")
|
||||
orgIDHeader := c.Header("orgId")
|
||||
|
||||
// 缺少登录信息
|
||||
if tokenHeader == "" || userIdHeader == "" || orgIDHeader == "" {
|
||||
reponse.Error(c).Code(reponse.CodeNoLogin).Send()
|
||||
c.Abort()
|
||||
return
|
||||
}
|
||||
|
||||
// Bearer token 格式校验
|
||||
parts := strings.Fields(tokenHeader)
|
||||
if len(parts) != 2 || strings.ToLower(parts[0]) != "bearer" {
|
||||
reponse.Error(c).Code(reponse.CodeInvalidToken).Send()
|
||||
c.Abort()
|
||||
return
|
||||
}
|
||||
|
||||
// 解析 token
|
||||
tokenStr := parts[1]
|
||||
claims, err := jwt.VerifyToken(tokenStr)
|
||||
if err != nil {
|
||||
switch {
|
||||
case errors.Is(err, jwt.ErrTokenExpired):
|
||||
reponse.Error(c).Code(reponse.CodeLoginExpired).Send()
|
||||
default:
|
||||
reponse.Error(c).Code(reponse.CodeInvalidToken).Send()
|
||||
}
|
||||
c.Abort()
|
||||
return
|
||||
}
|
||||
|
||||
// user_id 校验
|
||||
if claims.UserID != userIdHeader {
|
||||
reponse.Error(c).Code(reponse.CodeInvalidToken).Send()
|
||||
c.Abort()
|
||||
return
|
||||
}
|
||||
|
||||
// org_id 校验
|
||||
if claims.OrgID != orgIDHeader {
|
||||
reponse.Error(c).Code(reponse.CodeInvalidToken).Send()
|
||||
c.Abort()
|
||||
return
|
||||
}
|
||||
|
||||
// 检查是否有该机构号
|
||||
hasOrg := false
|
||||
for k := range config.GetDBConfigs() {
|
||||
if k == orgIDHeader {
|
||||
hasOrg = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if !hasOrg {
|
||||
reponse.Error(c).Code(reponse.CodeInvalidOrgCode).Send()
|
||||
return
|
||||
}
|
||||
|
||||
c.Set("orgId", orgIDHeader)
|
||||
|
||||
c.Next()
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user