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 }