55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
package account
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
"time"
|
|
|
|
sysMenuService "be.ems/features/sys_menu/service"
|
|
sysRoleService "be.ems/features/sys_role/service"
|
|
"be.ems/lib/core/cache"
|
|
"be.ems/lib/core/vo"
|
|
"be.ems/lib/dborm"
|
|
srcConfig "be.ems/src/framework/config"
|
|
)
|
|
|
|
// 登录缓存用户信息
|
|
func CacheLoginUser(user *dborm.User) {
|
|
// 过期时间
|
|
expiresStr, err := dborm.XormGetConfigValue("Security", "sessionExpires")
|
|
if err != nil {
|
|
expiresStr = "18000"
|
|
}
|
|
expiresValue, _ := strconv.Atoi(expiresStr)
|
|
expireTime := time.Duration(expiresValue) * time.Second
|
|
|
|
nowTime := time.Now().UnixMilli()
|
|
|
|
// 登录用户
|
|
loginUser := vo.LoginUser{
|
|
UserID: fmt.Sprint(user.Id),
|
|
UserName: user.Name,
|
|
ExpireTime: nowTime + expireTime.Milliseconds(),
|
|
LoginTime: nowTime,
|
|
User: *user,
|
|
}
|
|
|
|
// 是否管理员
|
|
if srcConfig.IsAdmin(loginUser.UserID) {
|
|
loginUser.Permissions = []string{"*:*:*"}
|
|
} else {
|
|
// 获取权限标识
|
|
loginUser.Permissions = sysMenuService.NewRepoSysMenu.SelectMenuPermsByUserId(loginUser.UserID)
|
|
// 获取角色信息
|
|
loginUser.User.Roles = sysRoleService.NewRepoSysRole.SelectRoleListByUserId(loginUser.UserID)
|
|
}
|
|
|
|
// 缓存时间
|
|
cache.SetLocalTTL(user.AccountId, loginUser, time.Duration(expireTime))
|
|
}
|
|
|
|
// 清除缓存用户信息
|
|
func ClearLoginUser(accountId string) {
|
|
cache.DeleteLocalTTL(accountId)
|
|
}
|