From 4bab3b49523da42d36eae2935807f0da7b9b5e91 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Tue, 29 Aug 2023 16:13:22 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=93=E5=AD=98=E7=94=A8=E6=88=B7=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/core/account/account.go | 54 +++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 lib/core/account/account.go diff --git a/lib/core/account/account.go b/lib/core/account/account.go new file mode 100644 index 00000000..22791419 --- /dev/null +++ b/lib/core/account/account.go @@ -0,0 +1,54 @@ +package account + +import ( + "fmt" + "strconv" + "time" + + sysMenuService "ems.agt/features/sys_menu/service" + sysRoleService "ems.agt/features/sys_role/service" + "ems.agt/lib/core/cache" + "ems.agt/lib/core/conf" + "ems.agt/lib/core/vo" + "ems.agt/lib/dborm" +) + +// 登录缓存用户信息 +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 conf.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) +}