Files
mp-qvyun/backend/modules/middlewares/m_jwt_parse.go
2024-12-06 17:15:28 +08:00

35 lines
720 B
Go

package middlewares
import (
"context"
"backend/common/consts"
"github.com/gofiber/fiber/v3"
"github.com/pkg/errors"
)
func (f *Middlewares) JwtParse(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
user, err := f.userSvc.GetByOpenID(c.Context(), claim.ID)
if err != nil {
return errors.Wrap(err, "failed to get user")
}
c.SetUserContext(context.WithValue(c.UserContext(), consts.CtxKeyJwt, token))
c.SetUserContext(context.WithValue(c.UserContext(), consts.CtxKeySession, user))
return c.Next()
}