49 lines
1.5 KiB
Go
49 lines
1.5 KiB
Go
|
package auth
|
|||
|
|
|||
|
import (
|
|||
|
"time"
|
|||
|
|
|||
|
"github.com/gin-gonic/gin"
|
|||
|
)
|
|||
|
|
|||
|
type AuthenticationRequest struct {
|
|||
|
Username string `json:"username,omitempty"`
|
|||
|
Password string `json:"password,omitempty"`
|
|||
|
Token string `json:"token,omitempty"`
|
|||
|
Captcha string `json:"captcha,omitempty"`
|
|||
|
Phone string `json:"phone,omitempty"`
|
|||
|
IP string `json:"ip,omitempty"`
|
|||
|
}
|
|||
|
|
|||
|
type AuthenticationResponse struct {
|
|||
|
Token string `json:"token,omitempty"`
|
|||
|
UID uint64 `json:"uid,omitempty"`
|
|||
|
Username string `json:"username,omitempty"`
|
|||
|
Nickname string `json:"nickname,omitempty"`
|
|||
|
Avatar string `json:"avatar,omitempty"`
|
|||
|
Phone string `json:"phone,omitempty"`
|
|||
|
Email string `json:"email,omitempty"`
|
|||
|
CreatedAt uint `json:"created_at,omitempty"`
|
|||
|
UpdatedAt uint `json:"updated_at,omitempty"`
|
|||
|
Code int `json:"-"`
|
|||
|
}
|
|||
|
|
|||
|
// type IdentifyResult struct {
|
|||
|
// KubernetesToken string
|
|||
|
// Cert string
|
|||
|
// }
|
|||
|
|
|||
|
// 验证账号密码的方法,这里想把这一块单独剥离出去,这样不同的auth就更加抽象化
|
|||
|
type IdentifyFunc func(*AuthenticationRequest) (*AuthenticationResponse, error)
|
|||
|
|
|||
|
type AuthManager interface {
|
|||
|
Login(IdentifyFunc, *AuthenticationRequest) (*AuthenticationResponse, error)
|
|||
|
Logout(*AuthenticationRequest) error
|
|||
|
Refresh(*AuthenticationRequest) (string, error)
|
|||
|
MiddleWare() gin.HandlerFunc
|
|||
|
// InitAuthRoute(IdentifyFunc, *gin.RouterGroup)
|
|||
|
ExpireAt(uint64, time.Time) error
|
|||
|
Expire(uint64, time.Duration) error
|
|||
|
TTL(uint64) (time.Duration, error)
|
|||
|
}
|