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{} }