aboutsummaryrefslogtreecommitdiffhomepage
path: root/backend
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2024-08-10 00:53:27 +0900
committernsfisis <nsfisis@gmail.com>2024-08-10 00:53:27 +0900
commit1b4b976ec6c0e6f25cbdde7c3ee564e99a786e64 (patch)
tree771fe342b68a5f8906259e395e6e8444a9a8616c /backend
parent01fafac46390e540f4d8766d53177a69da7e64ae (diff)
downloadiosdc-japan-2024-albatross-1b4b976ec6c0e6f25cbdde7c3ee564e99a786e64.tar.gz
iosdc-japan-2024-albatross-1b4b976ec6c0e6f25cbdde7c3ee564e99a786e64.tar.zst
iosdc-japan-2024-albatross-1b4b976ec6c0e6f25cbdde7c3ee564e99a786e64.zip
feat: configure JWT secret
Diffstat (limited to 'backend')
-rw-r--r--backend/auth/jwt.go20
1 files changed, 16 insertions, 4 deletions
diff --git a/backend/auth/jwt.go b/backend/auth/jwt.go
index 510656b..13af837 100644
--- a/backend/auth/jwt.go
+++ b/backend/auth/jwt.go
@@ -2,6 +2,7 @@ package auth
import (
"errors"
+ "os"
"time"
"github.com/golang-jwt/jwt/v5"
@@ -9,6 +10,17 @@ import (
"github.com/nsfisis/iosdc-japan-2024-albatross/backend/db"
)
+var (
+ jwtSecret []byte
+)
+
+func init() {
+ jwtSecret = []byte(os.Getenv("ALBATROSS_JWT_SECRET"))
+ if len(jwtSecret) == 0 {
+ panic("ALBATROSS_JWT_SECRET is not set")
+ }
+}
+
type JWTClaims struct {
UserID int `json:"user_id"`
Username string `json:"username"`
@@ -30,7 +42,7 @@ func NewJWT(user *db.User) (string, error) {
},
}
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
- return token.SignedString([]byte("TODO"))
+ return token.SignedString(jwtSecret)
}
func NewAnonymousJWT() (string, error) {
@@ -38,7 +50,7 @@ func NewAnonymousJWT() (string, error) {
ExpiresAt: jwt.NewNumericDate(time.Now().Add(time.Minute * 5)),
}
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
- return token.SignedString([]byte("TODO"))
+ return token.SignedString(jwtSecret)
}
func NewShortLivedJWT(claims *JWTClaims) (string, error) {
@@ -53,13 +65,13 @@ func NewShortLivedJWT(claims *JWTClaims) (string, error) {
},
}
token := jwt.NewWithClaims(jwt.SigningMethodHS256, newClaims)
- return token.SignedString([]byte("TODO"))
+ return token.SignedString(jwtSecret)
}
func ParseJWT(token string) (*JWTClaims, error) {
claims := new(JWTClaims)
t, err := jwt.ParseWithClaims(token, claims, func(*jwt.Token) (interface{}, error) {
- return []byte("TODO"), nil
+ return jwtSecret, nil
})
if err != nil {
return nil, err