package middleware import ( "strings" "git.qowevisa.me/Qowevisa/fin-check-api/tokens" "git.qowevisa.me/Qowevisa/fin-check-api/types" "github.com/gin-gonic/gin" ) // Passes UserID with `c.Set("UserID")` as it gets id from token func AuthMiddleware() gin.HandlerFunc { return func(c *gin.Context) { authHeader := c.GetHeader("Authorization") if authHeader == "" { c.JSON(401, types.ErrorResponse{Message: "Authorization header is required"}) c.Abort() return } token := authHeader if strings.Index(token, "Bearer ") == 0 { token = strings.Split(token, " ")[1] } if !tokens.AmIAllowed(token) { c.JSON(401, types.ErrorResponse{Message: "Token is invalid"}) c.Abort() return } if userID, err := tokens.GetID(token); err != nil { c.JSON(401, types.ErrorResponse{Message: "Token is invalid ERR4001"}) c.Abort() return } else { c.Set("UserID", userID) } c.Next() } }