Reviewed-on: phoenix/textsender-auth#6
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
This commit is contained in:
phoenix
2025-09-13 17:47:15 +00:00
committed by phoenix
parent 976a017b4f
commit 3e28db7552
16 changed files with 256 additions and 28 deletions
-1
View File
@@ -1,6 +1,5 @@
package utility
import (
"golang.org/x/crypto/bcrypt"
)
+40
View File
@@ -0,0 +1,40 @@
package utility
import (
"time"
"github.com/golang-jwt/jwt/v5"
"git.kundeng.us/phoenix/textsender-auth/internal/model"
)
type TokenGenerator struct {
SecretKey []byte
}
func (t *TokenGenerator) SetSecretKey(secretKey string) {
t.SecretKey = []byte(secretKey)
}
func (t *TokenGenerator) GenerateToken(user model.User) (*model.Login, error) {
claims := t.generateClaims(user, "regular")
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
}
}
func (t *TokenGenerator) generateClaims(user model.User, role string) 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()),
},
}
}