From 9f6f2c9c875de2ee5108dc9743b2b30dcb42cd13 Mon Sep 17 00:00:00 2001 From: Derrick Hammer Date: Tue, 13 Feb 2024 20:58:17 -0500 Subject: [PATCH] feat: add purpose to jwt with consts --- account/account.go | 2 +- account/jwt.go | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/account/account.go b/account/account.go index faaf8ba..1eb854c 100644 --- a/account/account.go +++ b/account/account.go @@ -253,7 +253,7 @@ func (s AccountServiceDefault) PinByID(uploadId uint, accountID uint) error { } func (s AccountServiceDefault) doLogin(user *models.User, ip string) (string, error) { - token, err := GenerateToken(s.config.GetString("core.domain"), s.identity, user.ID) + token, err := GenerateToken(s.config.GetString("core.domain"), s.identity, user.ID, JWTPurposeLogin) if err != nil { return "", err } diff --git a/account/jwt.go b/account/jwt.go index fadb8ad..b1f4b92 100644 --- a/account/jwt.go +++ b/account/jwt.go @@ -6,16 +6,24 @@ import ( "time" ) -func GenerateToken(domain string, privateKey ed25519.PrivateKey, userID uint) (string, error) { - return GenerateTokenWithDuration(domain, privateKey, userID, time.Hour*24) +type JWTPurpose string + +const ( + JWTPurposeLogin JWTPurpose = "login" +) + +func GenerateToken(domain string, privateKey ed25519.PrivateKey, userID uint, purpose JWTPurpose) (string, error) { + return GenerateTokenWithDuration(domain, privateKey, userID, time.Hour*24, purpose) } -func GenerateTokenWithDuration(domain string, privateKey ed25519.PrivateKey, userID uint, duration time.Duration) (string, error) { + +func GenerateTokenWithDuration(domain string, privateKey ed25519.PrivateKey, userID uint, duration time.Duration, purpose JWTPurpose) (string, error) { // Define the claims claims := jwt.MapClaims{ "iss": domain, "sub": userID, "exp": time.Now().Add(duration).Unix(), "iat": time.Now().Unix(), + "aud": string(purpose), } // Create the token