package middleware import ( "net/http" "strings" "github.com/gin-gonic/gin" ) const API_AUTH_USER_KEY = "APIAuthUserKey" func ApiAuthMiddleware(c *gin.Context) { cfg := GetServerConfig(c) auth := strings.Split(c.Request.Header.Get("Authorization"), " ") if len(auth) != 2 || auth[0] != "Bearer" { c.AbortWithStatus(http.StatusUnauthorized) return } if user, ok := cfg.ApiSecrets[auth[1]]; ok { c.Set(API_AUTH_USER_KEY, user) } else { c.AbortWithStatus(http.StatusUnauthorized) return } c.Next() } func GetAPIAuthUser(c *gin.Context) string { return c.GetString(API_AUTH_USER_KEY) }