51 lines
1.2 KiB
Go
51 lines
1.2 KiB
Go
package models
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/golang-jwt/jwt/v4"
|
|
)
|
|
|
|
type Account struct {
|
|
ID string `json:"id"`
|
|
Email string `json:"email"`
|
|
FirstName string `json:"firstName,omitempty"`
|
|
LastName string `json:"lastName,omitempty"`
|
|
VerifiedIdentity *bool `json:"verifiedIdentity,omitempty"`
|
|
BirthDate string `json:"birthdate,omitempty"`
|
|
Type string `json:"type,omitempty"`
|
|
LocalCredentials
|
|
}
|
|
|
|
type User struct {
|
|
ID string `json:"user_id"`
|
|
Status string `json:"status"`
|
|
BookingID string `json:"booking_id"`
|
|
}
|
|
|
|
type LocalCredentials struct {
|
|
Email string
|
|
EmailVerified bool
|
|
EmailValidationCode string
|
|
PhoneNumber string
|
|
PhoneNumberVerified bool
|
|
PhoneNumberValidationCode string
|
|
}
|
|
|
|
type UserClaims struct {
|
|
jwt.RegisteredClaims
|
|
}
|
|
|
|
func (account Account) CreateToken(ttl time.Duration, key string) (token string, err error) {
|
|
expiresAt := jwt.NewNumericDate(time.Now().Add(ttl))
|
|
claims := UserClaims{
|
|
RegisteredClaims: jwt.RegisteredClaims{
|
|
Subject: account.ID,
|
|
ExpiresAt: expiresAt,
|
|
},
|
|
}
|
|
|
|
t := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
|
|
return t.SignedString([]byte(key))
|
|
}
|