diff --git a/cmd/api/main.go b/cmd/api/main.go index 4539188..67bdb15 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -30,7 +30,7 @@ func main() { fmt.Println(version.String()) return } - fmt.Println("textsender-auth") + fmt.Println(config.App_Name) cfg := config.Load() diff --git a/internal/config/config.go b/internal/config/config.go index 7e8264f..5f82d6d 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -27,6 +27,8 @@ type ConnectionInfo struct { const Port = "9080" +const App_Name = "textsender_auth" + func (ci ConnectionInfo) Parse() string { return fmt.Sprintf("postgres://%s:%s@%s:%d/%s?sslmode=%s", ci.Username, ci.Password, ci.Host, ci.Port, ci.Database, ci.SslMode) } diff --git a/internal/model/token.go b/internal/model/token.go index 2e99690..e821175 100644 --- a/internal/model/token.go +++ b/internal/model/token.go @@ -12,4 +12,6 @@ type Claims struct { type Login struct { AccessToken string `json:"access_token"` + TokenType string `json:"token_type"` + ExpiresIn int64 `json:"expires_in"` } diff --git a/internal/utility/token.go b/internal/utility/token.go index 85a18ec..898571d 100644 --- a/internal/utility/token.go +++ b/internal/utility/token.go @@ -5,9 +5,13 @@ import ( "github.com/golang-jwt/jwt/v5" + "git.kundeng.us/phoenix/textsender-auth/internal/config" "git.kundeng.us/phoenix/textsender-auth/internal/model" ) +const ROLE_TYPE = "regular" +const TOKEN_TYPE = "Bearer" + type TokenGenerator struct { SecretKey []byte } @@ -17,24 +21,26 @@ func (t *TokenGenerator) SetSecretKey(secretKey string) { } func (t *TokenGenerator) GenerateToken(user model.User) (*model.Login, error) { - claims := t.generateClaims(user, "regular") + issuedAt := time.Now() + expirationTime := time.Now().Add(4 * time.Hour) + claims := t.generateClaims(user, TOKEN_TYPE, issuedAt, expirationTime) token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) if tokenString, err := token.SignedString(t.SecretKey); err != nil { return nil, err } else { - return &model.Login{AccessToken: tokenString}, nil + return &model.Login{AccessToken: tokenString, TokenType: TOKEN_TYPE, ExpiresIn: expirationTime.Unix()}, nil } } -func (t *TokenGenerator) generateClaims(user model.User, role string) model.Claims { +func (t *TokenGenerator) generateClaims(user model.User, role string, issuedAt time.Time, expiredAt time.Time) model.Claims { return model.Claims{ UserId: user.Id.String(), Role: role, RegisteredClaims: jwt.RegisteredClaims{ - Issuer: "textsender-auth", - ExpiresAt: jwt.NewNumericDate(time.Now().Add(24 * time.Hour)), - IssuedAt: jwt.NewNumericDate(time.Now()), + Issuer: config.App_Name, + ExpiresAt: jwt.NewNumericDate(expiredAt), + IssuedAt: jwt.NewNumericDate(issuedAt), }, } }