33 lines
596 B
Go
33 lines
596 B
Go
package middlewares
|
|
|
|
import (
|
|
"os"
|
|
"strings"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
func HermesAuth() fiber.Handler {
|
|
return func(c *fiber.Ctx) error {
|
|
apiKey := os.Getenv("HERMES_API_KEY")
|
|
if apiKey == "" {
|
|
return c.Status(503).JSON(fiber.Map{"error": "HERMES_API_KEY not configured"})
|
|
}
|
|
|
|
token := ""
|
|
auth := c.Get("Authorization")
|
|
if strings.HasPrefix(auth, "Bearer ") {
|
|
token = auth[7:]
|
|
}
|
|
if token == "" {
|
|
token = c.Get("X-API-Key")
|
|
}
|
|
|
|
if token == "" || token != apiKey {
|
|
return c.Status(401).JSON(fiber.Map{"error": "unauthorized"})
|
|
}
|
|
|
|
return c.Next()
|
|
}
|
|
}
|