package controller import ( "fmt" "net/http" "opencatd-open/internal/consts" "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" ) func (h *Team) AuthMiddleware() gin.HandlerFunc { return func(c *gin.Context) { if c.Request.URL.Path == "/1/users/init" { c.Next() return } authtoken := c.GetHeader("Authorization") if authtoken == "" || len(authtoken) <= 7 || authtoken[:7] != "Bearer " { c.JSON(http.StatusUnauthorized, gin.H{"error": "Unauthorized"}) c.Abort() return } authtoken = authtoken[7:] token, err := h.tokenService.GetByKey(c, authtoken) if err != nil { fmt.Println(err) } if token.Name != "default" { c.JSON(http.StatusForbidden, gin.H{"error": "only default token can access"}) c.Abort() } if token.User.Status != consts.StatusEnabled { c.JSON(http.StatusForbidden, gin.H{"error": "user is disabled"}) c.Abort() } c.Set("local_user", true) c.Set("token", token) // 可以在这里对 token 进行验证并检查权限 c.Next() } } func CORS() gin.HandlerFunc { config := cors.DefaultConfig() config.AllowAllOrigins = true config.AllowCredentials = true config.AllowMethods = []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"} config.AllowHeaders = []string{"*"} return cors.New(config) }