verification/internal/server/middleware.go
Danil Solovyov 7d677a2d83 Version 0.1
2023-06-12 19:19:10 +05:00

43 lines
872 B
Go

package server
import (
"github.com/gofiber/fiber/v2"
"penahub.gitlab.yandexcloud.net/backend/penahub_common/jwt_adapter"
)
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
if c.Locals("userID") != nil {
return c.Next()
}
jwt, err := jwt_adapter.Decode(c.Cookies(jwt_adapter.DefaultHeaderKey))
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")
}
c.Locals("userID", jwt.GetUserID())
return c.Next()
}
}