package middlewares import ( "backend/pkg/consts" "github.com/gofiber/fiber/v3" "github.com/pkg/errors" ) func (f *Middlewares) ParseJWT(c fiber.Ctx) error { tokens := c.GetReqHeaders()["Authorization"] if len(tokens) == 0 { return c.Next() } token := tokens[0] claim, err := f.jwt.Parse(token) if err != nil { return errors.Wrap(err, "failed to parse token") } // query user _, err = f.userSvc.GetByOpenID(c.Context(), claim.OpenID) if err != nil { return errors.Wrap(err, "failed to get user") } _, err = f.userSvc.GetTenantBySlug(c.Context(), claim.Tenant) if err != nil { return errors.Wrap(err, "failed to get tenant") } c.Locals(consts.CtxKeyJwt, token) c.Locals(consts.CtxKeyClaim, claim) return c.Next() }