Files
Novault-backend/internal/middleware/admin_middleware.go

39 lines
819 B
Go
Raw Normal View History

package middleware
import (
"accounting-app/internal/config"
"accounting-app/pkg/api"
"github.com/gin-gonic/gin"
)
// AdminMiddleware provides admin authentication middleware
type AdminMiddleware struct {
cfg *config.Config
}
// NewAdminMiddleware creates a new AdminMiddleware
func NewAdminMiddleware(cfg *config.Config) *AdminMiddleware {
return &AdminMiddleware{
cfg: cfg,
}
}
// RequireAdminKey checks for the Admin-Secret-Key header
func (m *AdminMiddleware) RequireAdminKey() gin.HandlerFunc {
return func(c *gin.Context) {
key := c.GetHeader("X-Admin-Secret-Key")
if key == "" {
// Fallback to query param for easier testing
key = c.Query("admin_secret")
}
if key != m.cfg.AdminSecretKey {
api.Unauthorized(c, "Invalid or missing admin secret key")
return
}
c.Next()
}
}