verification/internal/server/middleware.go

47 lines
1.0 KiB
Go
Raw Permalink Normal View History

2023-06-12 14:19:10 +00:00
package server
import (
2024-11-21 07:29:18 +00:00
"gitea.pena/PenaSide/verification/internal/models"
2023-07-12 18:35:21 +00:00
"strings"
2023-06-12 14:19:10 +00:00
"github.com/gofiber/fiber/v2"
2024-11-21 07:29:18 +00:00
"gitea.pena/PenaSide/common/jwt_adapter"
2023-06-12 14:19:10 +00:00
)
func LocalJwt() fiber.Handler {
return func(c *fiber.Ctx) error {
if c.Get("LocalUserID") != "" {
c.Locals("userID", c.Get("LocalUserID"))
}
return c.Next()
}
}
func Jwt() fiber.Handler {
return func(c *fiber.Ctx) error {
// check LocalJwt
2024-05-27 11:53:34 +00:00
if c.Locals(models.UserCtxKey) != nil {
2023-06-12 14:19:10 +00:00
return c.Next()
}
2023-07-12 18:40:06 +00:00
jwt, err := jwt_adapter.Decode(strings.ReplaceAll(c.Get(jwt_adapter.DefaultHeaderKey), "Bearer ", ""))
2023-06-12 14:19:10 +00:00
if err != nil {
return fiber.NewError(fiber.StatusUnauthorized, err.Error())
}
err = jwt.Validate()
if err != nil {
return fiber.NewError(fiber.StatusUnauthorized, err.Error())
}
if jwt.GetUserID() == "" {
return fiber.NewError(fiber.StatusUnauthorized, "empty user")
}
2024-05-27 11:53:34 +00:00
c.Locals(models.UserCtxKey, jwt.GetUserID())
c.Locals(models.TokenCtxKey, c.Get(jwt_adapter.DefaultHeaderKey))
return c.Next()
}
}