53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
package jwt
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/golang-jwt/jwt/v4"
|
|
)
|
|
|
|
type Token struct {
|
|
ID string `json:"id"`
|
|
UID string `json:"uid"`
|
|
DeviceID string `json:"device_id"`
|
|
AccessToken string `json:"access_token"`
|
|
ExpiresIn int `json:"expires_in"`
|
|
AccessCreateAt time.Time `json:"access_create_at"`
|
|
RefreshToken string `json:"refresh_token"`
|
|
RefreshExpiresIn int `json:"refresh_expires_in"`
|
|
RefreshCreateAt time.Time `json:"refresh_create_at"`
|
|
}
|
|
|
|
func (t *Token) AccessTokenExpires() time.Duration {
|
|
return time.Duration(t.ExpiresIn) * time.Second
|
|
}
|
|
|
|
func (t *Token) RefreshTokenExpires() time.Duration {
|
|
return time.Duration(t.RefreshExpiresIn) * time.Second
|
|
}
|
|
|
|
func (t *Token) RefreshTokenExpiresUnix() int64 {
|
|
return time.Now().Add(t.RefreshTokenExpires()).Unix()
|
|
}
|
|
|
|
func (t *Token) IsExpires() bool {
|
|
return t.AccessCreateAt.Add(t.AccessTokenExpires()).Before(time.Now())
|
|
}
|
|
|
|
func (t *Token) RedisExpiredSec() int64 {
|
|
sec := time.Unix(int64(t.ExpiresIn), 0).Sub(time.Now().UTC())
|
|
|
|
return int64(sec.Seconds())
|
|
}
|
|
|
|
func (t *Token) RedisRefreshExpiredSec() int64 {
|
|
sec := time.Unix(int64(t.RefreshExpiresIn), 0).Sub(time.Now().UTC())
|
|
|
|
return int64(sec.Seconds())
|
|
}
|
|
|
|
type Claims struct {
|
|
jwt.RegisteredClaims
|
|
Data interface{} `json:"data"`
|
|
}
|