1 Star 0 Fork 0

lollipop-xyz/g7-keyauth

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
app.go 2.18 KB
一键复制 编辑 原始数据 按行查看 历史
xy 提交于 2022-11-09 14:30 +08:00 . add endpoint
package token
import (
"fmt"
"time"
"gitee.com/lollipop-xyz/g7-keyauth/apps/user"
"gitee.com/lollipop-xyz/g7-keyauth/utils"
"github.com/infraboard/mcube/exception"
)
const (
AppName = "token"
)
func NewIssueTokenRequest() *IssueTokenRequest {
return &IssueTokenRequest{
UserDomain: user.DefaultDomain,
}
}
func (req *IssueTokenRequest) Validate() error {
switch req.GranteType {
case GranteType_PASSWORD:
if req.UserName == "" || req.Password == "" {
return fmt.Errorf("password grant required username and password")
}
}
return nil
}
func NewDefaultToken() *Token {
return &Token{
Data: &IssueTokenRequest{},
Meta: map[string]string{},
}
}
func NewToken(req *IssueTokenRequest, expiredDuration time.Duration) *Token {
now := time.Now()
// Token 10
expired := now.Add(expiredDuration)
refresh := now.Add(expiredDuration * 5)
return &Token{
AccessToken: utils.MakeBearer(24),
IssueAt: now.UnixMilli(),
Data: req,
AccessTokenExpiredAt: expired.UnixMilli(),
RefreshToken: utils.MakeBearer(32),
RefreshTokenExpiredAt: refresh.UnixMilli(),
}
}
func (t *Token) Validate() error {
// 判断Token过期没有
// 是一个时间戳,
// now expire
if time.Now().UnixMilli() > t.AccessTokenExpiredAt {
return exception.NewAccessTokenExpired("access token expired")
}
return nil
}
func (t *Token) IsRefreshTokenExpired() bool {
// 判断refresh Token过期没有
// 是一个时间戳,
// now expire
if time.Now().UnixMilli() > t.RefreshTokenExpiredAt {
return true
}
return false
}
// 续约Token, 延长一个生命周期
func (t *Token) Extend(expiredDuration time.Duration) {
now := time.Now()
// Token 10
expired := now.Add(expiredDuration)
refresh := now.Add(expiredDuration * 5)
t.AccessTokenExpiredAt = expired.UnixMilli()
t.RefreshTokenExpiredAt = refresh.UnixMilli()
}
func NewDescribeTokenRequest(at string) *DescribeTokenRequest {
return &DescribeTokenRequest{
AccessToken: at,
}
}
func NewValidateTokenRequest(at string) *ValidateTokenRequest {
return &ValidateTokenRequest{
AccessToken: at,
}
}
func NewRevolkTokenRequest() *RevolkTokenRequest {
return &RevolkTokenRequest{}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/lollipop-xyz/g7-keyauth.git
git@gitee.com:lollipop-xyz/g7-keyauth.git
lollipop-xyz
g7-keyauth
g7-keyauth
v0.0.8

搜索帮助