42 lines
1.0 KiB
Go
42 lines
1.0 KiB
Go
![]() |
package account
|
||
|
|
||
|
import (
|
||
|
"SciencesServer/app/enterprise/model"
|
||
|
"SciencesServer/app/service"
|
||
|
"SciencesServer/config"
|
||
|
"SciencesServer/utils"
|
||
|
)
|
||
|
|
||
|
type Account struct{}
|
||
|
|
||
|
type LoginCallback func(user *model.TenantUser) *LoginResponse
|
||
|
|
||
|
type (
|
||
|
LoginResponse struct {
|
||
|
Token string `json:"token"`
|
||
|
EffectTime int `json:"effect_time"`
|
||
|
}
|
||
|
)
|
||
|
|
||
|
func (c *Account) Login() LoginCallback {
|
||
|
return func(mTenantUser *model.TenantUser) *LoginResponse {
|
||
|
token := utils.JWTEncrypt(config.SettingInfo.TokenEffectTime, map[string]interface{}{
|
||
|
config.TokenForUID: mTenantUser.UUID,
|
||
|
})
|
||
|
session := service.NewSessionEnterprise()
|
||
|
session.Token = token
|
||
|
session.UID = mTenantUser.UUID
|
||
|
session.Name = mTenantUser.Name
|
||
|
session.Mobile = mTenantUser.Mobile
|
||
|
session.Identity = mTenantUser.Identity
|
||
|
|
||
|
service.Publish(config.EventForRedisHashProduce, config.RedisKeyForAccount, mTenantUser.UUIDToString(), session)
|
||
|
|
||
|
return &LoginResponse{Token: token, EffectTime: config.SettingInfo.TokenEffectTime}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func NewAccount() *Account {
|
||
|
return &Account{}
|
||
|
}
|