Files
be.ems/lib/core/account/account.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)
}