43 lines
872 B
Go
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()
|
||
|
}
|
||
|
}
|