aboutsummaryrefslogtreecommitdiffhomepage
path: root/backend/auth/jwt.go
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2024-07-29 20:04:03 +0900
committernsfisis <nsfisis@gmail.com>2024-07-29 20:04:09 +0900
commit648613e24c8afe5fd3c599def61b33ccf7bcb96c (patch)
treef368aa1ef1d734d3096c9129e17d6af11d1041a6 /backend/auth/jwt.go
parentd73fd8bf5bf589a4a391c867e980761fadb647ce (diff)
downloadphperkaigi-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.go15
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) {