Files
rikkei_simple_care/server/internal/middleware/staff.go
PhuocNTB 6ee9773f7f
All checks were successful
Deploy on Master Change / deploy (push) Successful in 1m45s
fix
2026-07-20 06:06:54 +07:00

40 lines
880 B
Go

package middleware
import (
"strings"
"server/internal/auth"
"github.com/gofiber/fiber/v2"
)
func RequireStaff() fiber.Handler {
return func(c *fiber.Ctx) error {
header := c.Get("Authorization")
var token string
if header != "" && strings.HasPrefix(header, "Bearer ") {
token = strings.TrimSpace(strings.TrimPrefix(header, "Bearer "))
} else {
token = c.Query("token")
}
if token == "" {
return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{"error": "Unauthorized"})
}
claims, err := auth.ParseToken(token)
if err != nil {
return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{"error": "Invalid or expired token"})
}
c.Locals("staffId", claims.StaffID)
c.Locals("staffEmail", claims.Email)
return c.Next()
}
}
func StaffIDFromCtx(c *fiber.Ctx) uint {
if v, ok := c.Locals("staffId").(uint); ok {
return v
}
return 0
}