Skip to main content
Glama
auth.go2.25 kB
package middleware import ( "net/http" "slices" "strings" "github.com/gin-gonic/gin" "github.com/weibaohui/k8m/pkg/comm/utils" "github.com/weibaohui/k8m/pkg/constants" "github.com/weibaohui/k8m/pkg/flag" "github.com/weibaohui/k8m/pkg/service" ) // AuthMiddleware 登录校验 func AuthMiddleware() gin.HandlerFunc { return func(c *gin.Context) { // 获取请求路径 path := c.Request.URL.Path // 检查请求路径是否需要跳过登录检测 if path == "/" || path == "/favicon.ico" || path == "/healthz" || strings.HasPrefix(path, "/monacoeditorwork/") || strings.HasPrefix(path, "/swagger/") || strings.HasPrefix(path, "/debug/") || strings.HasPrefix(path, "/mcp/") || strings.HasPrefix(path, "/auth/") || strings.HasPrefix(path, "/assets/") || strings.HasPrefix(path, "/public/") { c.Next() return } cfg := flag.Init() claims, err := utils.GetJWTClaims(c, cfg.JwtTokenSecret) if err != nil { c.JSON(http.StatusUnauthorized, gin.H{"message": err.Error()}) c.Abort() return } // 设置信息传递,后面才能从ctx中获取到用户信息 c.Set(constants.JwtUserName, claims[constants.JwtUserName]) c.Next() } } // PlatformAuthMiddleware 平台管理员角色校验 func PlatformAuthMiddleware() gin.HandlerFunc { return func(c *gin.Context) { cfg := flag.Init() claims, err := utils.GetJWTClaims(c, cfg.JwtTokenSecret) if err != nil { c.JSON(http.StatusUnauthorized, gin.H{"message": err.Error()}) c.Abort() return } username, ok := claims[constants.JwtUserName].(string) if !ok || username == "" { c.JSON(http.StatusUnauthorized, gin.H{"error": "无效的用户名"}) c.Abort() return } roles, err := service.UserService().GetRolesByUserName(username) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": "角色查询失败"}) c.Abort() return } // 权限检查 if !slices.Contains(roles, constants.RolePlatformAdmin) { c.JSON(http.StatusForbidden, gin.H{"error": "平台管理员权限校验失败"}) c.Abort() return } // 设置信息传递,后面才能从ctx中获取到用户信息 c.Set(constants.JwtUserName, claims[constants.JwtUserName]) c.Next() } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/weibaohui/k8m'

If you have feedback or need assistance with the MCP directory API, please join our Discord server