diff options
| author | nsfisis <nsfisis@gmail.com> | 2024-07-28 16:00:22 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2024-07-28 16:01:01 +0900 |
| commit | c953b0496ef205ddda0defd70f376623bf13db61 (patch) | |
| tree | 80ddd24c45612dc1971ddb0b268440bfd2efc067 /backend/auth/jwt.go | |
| parent | d85cf0be57dd4394c588c340fbfa8483d981da02 (diff) | |
| download | phperkaigi-2025-albatross-c953b0496ef205ddda0defd70f376623bf13db61.tar.gz phperkaigi-2025-albatross-c953b0496ef205ddda0defd70f376623bf13db61.tar.zst phperkaigi-2025-albatross-c953b0496ef205ddda0defd70f376623bf13db61.zip | |
feat(backend): handle JWT validation manually
Diffstat (limited to 'backend/auth/jwt.go')
| -rw-r--r-- | backend/auth/jwt.go | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/backend/auth/jwt.go b/backend/auth/jwt.go index 1b153fe..c750531 100644 --- a/backend/auth/jwt.go +++ b/backend/auth/jwt.go @@ -1,11 +1,10 @@ package auth import ( + "errors" "time" "github.com/golang-jwt/jwt/v5" - echojwt "github.com/labstack/echo-jwt/v4" - "github.com/labstack/echo/v4" "github.com/nsfisis/iosdc-2024-albatross-backend/db" ) @@ -38,17 +37,16 @@ func NewJWT(user *db.User) (string, error) { return token.SignedString([]byte("TODO")) } -func NewJWTMiddleware() echo.MiddlewareFunc { - return echojwt.WithConfig(echojwt.Config{ - NewClaimsFunc: func(c echo.Context) jwt.Claims { - return new(JWTClaims) - }, - SigningKey: []byte("TODO"), +func ParseJWT(token string) (*JWTClaims, error) { + claims := new(JWTClaims) + t, err := jwt.ParseWithClaims(token, claims, func(t *jwt.Token) (interface{}, error) { + return []byte("TODO"), nil }) -} - -func GetJWTClaimsFromEchoContext(c echo.Context) *JWTClaims { - user := c.Get("user").(*jwt.Token) - claims := user.Claims.(*JWTClaims) - return claims + if err != nil { + return nil, err + } + if !t.Valid { + return nil, errors.New("invalid token") + } + return claims, nil } |
