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() } }