Files
skybridge/user/internal/middleware/auth.go
2025-08-31 22:35:23 -04:00

37 lines
929 B
Go

package middleware
import (
"net/http"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
"github.com/RyanCopley/skybridge/user/internal/config"
)
// Authentication middleware
func Authentication(cfg config.ConfigProvider, logger *zap.Logger) gin.HandlerFunc {
return gin.HandlerFunc(func(c *gin.Context) {
// For development, we'll use header-based authentication
if cfg.GetString("AUTH_PROVIDER") == "header" {
userEmail := c.GetHeader(cfg.GetString("AUTH_HEADER_USER_EMAIL"))
if userEmail == "" {
logger.Warn("Missing authentication header",
zap.String("header", cfg.GetString("AUTH_HEADER_USER_EMAIL")),
zap.String("path", c.Request.URL.Path))
c.JSON(http.StatusUnauthorized, gin.H{
"error": "Authentication required",
})
c.Abort()
return
}
// Set actor in context for handlers
c.Set("actor_id", userEmail)
c.Set("user_email", userEmail)
}
c.Next()
})
}