Skip to content

Commit 4f0829a

Browse files
author
raul-brainattica
committed
Refactor Generate Token
1 parent 77b2a36 commit 4f0829a

File tree

6 files changed

+30
-15
lines changed

6 files changed

+30
-15
lines changed

core/authentication/jwt_backend.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,17 @@ func InitJWTAuthenticationBackend() *JWTAuthenticationBackend {
3434
return authBackendInstance
3535
}
3636

37-
func (backend *JWTAuthenticationBackend) GenerateToken(user *models.User) string {
37+
func (backend *JWTAuthenticationBackend) GenerateToken(userUUID string) (string, error) {
3838
token := jwt.New(jwt.GetSigningMethod("RS256"))
39-
token.Claims["exp"] = time.Now().Add(time.Hour * time.Duration(tokenDuration)).Unix()
39+
token.Claims["exp"] = time.Now().Add(time.Hour * time.Duration(settings.Get().JWTExpirationDelta)).Unix()
4040
token.Claims["iat"] = time.Now().Unix()
41-
token.Claims["sub"] = user.UUID
42-
tokenString, _ := token.SignedString(backend.privateKey)
43-
return tokenString
41+
token.Claims["sub"] = userUUID
42+
tokenString, err := token.SignedString(backend.privateKey)
43+
if err != nil {
44+
panic(err)
45+
return "", err
46+
}
47+
return tokenString, nil
4448
}
4549

4650
func (backend *JWTAuthenticationBackend) Authenticate(user *models.User) bool {

services/auth_service.go

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,25 @@ func Login(requestUser *models.User) (int, []byte) {
1313
authBackend := authentication.InitJWTAuthenticationBackend()
1414

1515
if authBackend.Authenticate(requestUser) {
16-
token := parameters.TokenAuthentication{authBackend.GenerateToken(requestUser)}
17-
response, _ := json.Marshal(token)
18-
return http.StatusOK, response
16+
token, err := authBackend.GenerateToken(requestUser.UUID)
17+
if err != nil {
18+
return http.StatusInternalServerError, []byte("")
19+
} else {
20+
response, _ := json.Marshal(parameters.TokenAuthentication{token})
21+
return http.StatusOK, response
22+
}
1923
}
2024

2125
return http.StatusUnauthorized, []byte("")
2226
}
2327

2428
func RefreshToken(requestUser *models.User) []byte {
2529
authBackend := authentication.InitJWTAuthenticationBackend()
26-
token := parameters.TokenAuthentication{authBackend.GenerateToken(requestUser)}
27-
response, err := json.Marshal(token)
30+
token, err := authBackend.GenerateToken(requestUser.UUID)
31+
if err != nil {
32+
panic(err)
33+
}
34+
response, err := json.Marshal(parameters.TokenAuthentication{token})
2835
if err != nil {
2936
panic(err)
3037
}

settings/pre.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{
22
"PrivateKeyPath": "/home/vagrant/go/src/api.jwt.auth/settings/keys/private_key",
3-
"PublicKeyPath": "/home/vagrant/go/src/api.jwt.auth/settings/keys/public_key.pub"
3+
"PublicKeyPath": "/home/vagrant/go/src/api.jwt.auth/settings/keys/public_key.pub",
4+
"JWTExpirationDelta": 72
45
}

settings/prod.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{
22
"PrivateKeyPath": "/home/vagrant/go/src/api.jwt.auth/settings/keys/private_key",
3-
"PublicKeyPath": "/home/vagrant/go/src/api.jwt.auth/settings/keys/public_key.pub"
3+
"PublicKeyPath": "/home/vagrant/go/src/api.jwt.auth/settings/keys/public_key.pub",
4+
"JWTExpirationDelta": 72
45
}

settings/settings.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@ var environments = map[string]string{
1414
}
1515

1616
type Settings struct {
17-
PrivateKeyPath string
18-
PublicKeyPath string
17+
PrivateKeyPath string
18+
PublicKeyPath string
19+
JWTExpirationDelta int
1920
}
2021

2122
var settings Settings = Settings{}

settings/tests.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{
22
"PrivateKeyPath": "/home/vagrant/go/src/api.jwt.auth/settings/keys/private_key",
3-
"PublicKeyPath": "/home/vagrant/go/src/api.jwt.auth/settings/keys/public_key.pub"
3+
"PublicKeyPath": "/home/vagrant/go/src/api.jwt.auth/settings/keys/public_key.pub",
4+
"JWTExpirationDelta": 72
45
}

0 commit comments

Comments
 (0)