package middleware import ( "github.com/gofiber/fiber/v2" "github.com/rs/xid" "heruvym/internal/utils/jwt_adapter" "strings" "time" ) func JwtPlug(c *fiber.Ctx) error { adapter := &jwt_adapter.JwtAdapter{Id: "604b79aced1d431b9e911f56"} adapter.SetUserID("604b79aced1d431b9e911f56") c.Locals("adapter", adapter) c.Locals("role", "admin") return c.Next() } // todo оказывается то что и хттп я переписал, ну надо убрать потом думаю func Jwt(c *fiber.Ctx) error { var ( token, role string adapter *jwt_adapter.JwtAdapter err error ) switch c.Get("Referer") { case "admin.pena.digital": role = "admin" default: role = "user" } c.Locals(jwt_adapter.RoleKey, role) token = c.Cookies(jwt_adapter.DefaultHeaderKey) if token == "" { token = strings.Replace(c.Get(jwt_adapter.DefaultHeaderKey), "Bearer ", "", -1) } // Если jwt не обнаружен, ищем sessionKey token = c.Get(sessionKey) if token == "" { session := c.Cookies(sessionKey) if token == "" { id := xid.New().String() adapter = &jwt_adapter.JwtAdapter{Id: id} c.Cookie(&fiber.Cookie{ Name: sessionKey, Value: id, Expires: time.Now().Add(time.Hour * 24 * 30), }) } else { adapter = &jwt_adapter.JwtAdapter{Id: session} } } else { adapter, err = jwt_adapter.Decode(token) } if err != nil { return c.SendStatus(fiber.StatusUnauthorized) } c.Locals("adapter", adapter) return c.Next() }