Skip to content

Commit

Permalink
token life time in database and set default to 24 hours (#315)
Browse files Browse the repository at this point in the history
* update

* update

* update
  • Loading branch information
swuecho authored May 16, 2023
1 parent 5e4c0a6 commit 795ca48
Show file tree
Hide file tree
Showing 6 changed files with 17 additions and 9 deletions.
4 changes: 2 additions & 2 deletions api/auth/token.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ func GenJwtSecretAndAudience() (string, string) {
return secret, audience
}

func GenerateToken(userID int32, role string, secret, jwt_audience string) (string, error) {
expires := time.Now().Add(time.Hour * 8).Unix()
func GenerateToken(userID int32, role string, secret, jwt_audience string, lifetime time.Duration) (string, error) {
expires := time.Now().Add(lifetime).Unix()
notBefore := time.Now().Unix()
issuer := "https://www.bestqa.net"

Expand Down
4 changes: 3 additions & 1 deletion api/auth/token_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@ package auth
import (
"fmt"
"testing"
"time"
)

func TestGenerateToken(t *testing.T) {
user_id := int32(0)
secret := "abedefg"
token, err := GenerateToken(user_id, "user", secret, "aud")
lifetime := 8 * time.Hour
token, err := GenerateToken(user_id, "user", secret, "aud", lifetime)
if err != nil {
t.Fatalf("error generating password hash: %v", err)
}
Expand Down
7 changes: 4 additions & 3 deletions api/chat_auth_user_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -131,8 +131,8 @@ func (h *AuthUserHandler) SignUp(w http.ResponseWriter, r *http.Request) {
http.Error(w, eris.Wrap(err, "failed to create user ").Error(), http.StatusInternalServerError)
return
}

tokenString, err := auth.GenerateToken(user.ID, user.Role(), jwtSecretAndAud.Secret, jwtSecretAndAud.Audience)
lifetime := time.Duration(jwtSecretAndAud.Lifetime) * time.Hour
tokenString, err := auth.GenerateToken(user.ID, user.Role(), jwtSecretAndAud.Secret, jwtSecretAndAud.Audience, lifetime)
if err != nil {
http.Error(w, "failed to generate token", http.StatusInternalServerError)
return
Expand Down Expand Up @@ -163,7 +163,8 @@ func (h *AuthUserHandler) Login(w http.ResponseWriter, r *http.Request) {
RespondWithError(w, http.StatusUnauthorized, "error.invalid_email_or_password", err)
return
}
token, err := auth.GenerateToken(user.ID, user.Role(), jwtSecretAndAud.Secret, jwtSecretAndAud.Audience)
lifetime := time.Duration(jwtSecretAndAud.Lifetime) * time.Hour
token, err := auth.GenerateToken(user.ID, user.Role(), jwtSecretAndAud.Secret, jwtSecretAndAud.Audience, lifetime)

if err != nil {
RespondWithError(w, http.StatusInternalServerError, "error.fail_to_generate_token", err)
Expand Down
4 changes: 3 additions & 1 deletion api/sqlc/schema.sql
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ CREATE TABLE IF NOT EXISTS jwt_secrets (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
secret TEXT NOT NULL,
audience TEXT NOT NULL
audience TEXT NOT NULL,
lifetime smallint NOT NULL default 24
);

ALTER TABLE jwt_secrets ADD COLUMN IF NOT EXISTS lifetime smallint NOT NULL default 24;

CREATE TABLE IF NOT EXISTS chat_model (
id SERIAL PRIMARY KEY,
Expand Down
6 changes: 4 additions & 2 deletions api/sqlc_queries/jwt_secrets.sql.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions api/sqlc_queries/models.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 795ca48

Please sign in to comment.