36 lines
714 B
Go
36 lines
714 B
Go
package middlewares
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/gofiber/fiber/v3"
|
|
)
|
|
|
|
func (f *Middlewares) AuthAdmin(ctx fiber.Ctx) error {
|
|
return ctx.Next()
|
|
if !strings.HasPrefix(ctx.Path(), "/v1/admin") {
|
|
return ctx.Next()
|
|
}
|
|
|
|
if ctx.Path() == "/v1/admin/auth" {
|
|
return ctx.Next()
|
|
}
|
|
|
|
token := ctx.Get("Authorization")
|
|
if token == "" {
|
|
token = ctx.Query("token")
|
|
if token == "" {
|
|
return ctx.Status(fiber.StatusUnauthorized).SendString("Unauthorized")
|
|
}
|
|
}
|
|
jwt, err := f.jwt.Parse(token)
|
|
if err != nil {
|
|
return ctx.Status(fiber.StatusUnauthorized).SendString("Unauthorized")
|
|
}
|
|
if jwt.UserID != -20140202 {
|
|
return ctx.Status(fiber.StatusForbidden).SendString("Forbidden")
|
|
}
|
|
|
|
return ctx.Next()
|
|
}
|