48 lines
808 B
Go
48 lines
808 B
Go
package model
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/golang-jwt/jwt/v5"
|
|
)
|
|
|
|
type Config struct {
|
|
Secret string
|
|
Issuer string
|
|
AccessTokenExpiry time.Duration
|
|
RefreshTokenExpiry time.Duration
|
|
}
|
|
|
|
type Claims struct {
|
|
Username string `json:"username"`
|
|
TokenType string `json:"type"`
|
|
jwt.RegisteredClaims
|
|
}
|
|
|
|
// Typescript: interface
|
|
type TokenPair struct {
|
|
AccessToken string `json:"access_token"`
|
|
RefreshToken string `json:"refresh_token"`
|
|
}
|
|
|
|
type Permission int
|
|
|
|
type Role struct {
|
|
Name string
|
|
Permissions Permission
|
|
}
|
|
|
|
const (
|
|
AdminPermission Permission = 0xff - (1<<iota - 1)
|
|
ManagerPermission
|
|
UserPermission
|
|
GuestPermission
|
|
)
|
|
|
|
var Roles = []Role{
|
|
{"admin", AdminPermission},
|
|
{"manager", ManagerPermission},
|
|
{"user", UserPermission},
|
|
{"guest", GuestPermission},
|
|
}
|