diff options
| author | nsfisis <nsfisis@gmail.com> | 2024-07-29 20:04:03 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2024-07-29 20:04:09 +0900 |
| commit | 648613e24c8afe5fd3c599def61b33ccf7bcb96c (patch) | |
| tree | f368aa1ef1d734d3096c9129e17d6af11d1041a6 /backend/auth/jwt.go | |
| parent | d73fd8bf5bf589a4a391c867e980761fadb647ce (diff) | |
| download | phperkaigi-2025-albatross-648613e24c8afe5fd3c599def61b33ccf7bcb96c.tar.gz phperkaigi-2025-albatross-648613e24c8afe5fd3c599def61b33ccf7bcb96c.tar.zst phperkaigi-2025-albatross-648613e24c8afe5fd3c599def61b33ccf7bcb96c.zip | |
feat: authenticate WebSocket connection by short-lived access token
Diffstat (limited to 'backend/auth/jwt.go')
| -rw-r--r-- | backend/auth/jwt.go | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/backend/auth/jwt.go b/backend/auth/jwt.go index 0b92155..b7abc68 100644 --- a/backend/auth/jwt.go +++ b/backend/auth/jwt.go @@ -33,6 +33,21 @@ func NewJWT(user *db.User) (string, error) { return token.SignedString([]byte("TODO")) } +func NewShortLivedJWT(claims *JWTClaims) (string, error) { + newClaims := &JWTClaims{ + UserID: claims.UserID, + Username: claims.Username, + DisplayName: claims.DisplayName, + IconPath: claims.IconPath, + IsAdmin: claims.IsAdmin, + RegisteredClaims: jwt.RegisteredClaims{ + ExpiresAt: jwt.NewNumericDate(time.Now().Add(time.Minute * 5)), + }, + } + token := jwt.NewWithClaims(jwt.SigningMethodHS256, newClaims) + return token.SignedString([]byte("TODO")) +} + func ParseJWT(token string) (*JWTClaims, error) { claims := new(JWTClaims) t, err := jwt.ParseWithClaims(token, claims, func(t *jwt.Token) (interface{}, error) { |
