package config import ( "context" "github.com/golang-jwt/jwt/v5" "github.com/labstack/echo-jwt/v4" "github.com/labstack/echo/v4" ) const ctxKeyJwt = "echo.ctx.jwt" func (c Configuration) EchoJwtMiddleware() echo.MiddlewareFunc { return echojwt.WithConfig(echojwt.Config{ ContextKey: ctxKeyJwt, SigningKey: []byte(c.SecretKey), SuccessHandler: func(ctx echo.Context) { val := context.WithValue(ctx.Request().Context(), ctxKeyJwt, ctx.Get(ctxKeyJwt)) ctx.SetRequest(ctx.Request().WithContext(val)) }, }) } func Token(ctx context.Context) *jwt.Token { t, ok := ctx.Value(ctxKeyJwt).(*jwt.Token) if !ok { return nil } return t }