core/auth/tokens.go
2024-05-16 04:16:05 +07:00

61 lines
1011 B
Go

package auth
import (
"fmt"
"system-trace/core/app/constants"
"system-trace/core/utils"
"time"
"github.com/golang-jwt/jwt/v5"
)
const (
AccessTokenLifetime int8 = 3
RefreshTokenLifetime int8 = 24
)
func genPair(id int32) (*PairTokens, error) {
at, rt, err := genTokens(id)
if err != nil {
return nil, err
}
err = insertPair(id, at, rt)
if err != nil {
return nil, err
}
p := PairTokens{
AccessToken: at,
RefreshToken: rt,
}
return &p, nil
}
func genTokens(id int32) (string, string, error) {
at, err := genToken(fmt.Sprintf("%d", id), AccessTokenLifetime)
if err != nil {
return "", "", err
}
rt, err := genToken(at, RefreshTokenLifetime)
if err != nil {
return "", "", err
}
return at, rt, nil
}
func genToken(sub string, hours int8) (string, error) {
c := jwt.MapClaims{
"iss": constants.JWT_APP_ISS,
"sub": sub,
"iat": time.Now().Unix(),
"exp": time.Now().Add(time.Duration(hours) * time.Hour).Unix(),
}
a, err := utils.SignJWT(c)
return a, err
}