优化若干功能
This commit is contained in:
@@ -195,6 +195,100 @@ func (c *BackendAuthController) GetCurrentUser() {
|
||||
})
|
||||
}
|
||||
|
||||
// GetCurrentUserProfile 当前登录用户的角色 / 部门 / 职位
|
||||
// GET /backend/getCurrentUserProfile
|
||||
// 返回 department / position(来自员工档案,按登录账号 + 租户匹配);
|
||||
// 若均无,则回退到角色名(role_name)。
|
||||
func (c *BackendAuthController) GetCurrentUserProfile() {
|
||||
authHeader := c.Ctx.Request.Header.Get("Authorization")
|
||||
if authHeader == "" {
|
||||
c.serveJSON(map[string]interface{}{"code": 401, "msg": "未登录"})
|
||||
return
|
||||
}
|
||||
authParts := strings.SplitN(authHeader, " ", 2)
|
||||
if len(authParts) != 2 || authParts[0] != "Bearer" {
|
||||
c.serveJSON(map[string]interface{}{"code": 401, "msg": "认证信息格式错误"})
|
||||
return
|
||||
}
|
||||
claims, err := jwtutil.ParseToken(authParts[1])
|
||||
if err != nil {
|
||||
c.serveJSON(map[string]interface{}{"code": 401, "msg": "无效的token"})
|
||||
return
|
||||
}
|
||||
if claims.UserType != "backend" && claims.UserType != "app" {
|
||||
c.serveJSON(map[string]interface{}{"code": 403, "msg": "无权访问"})
|
||||
return
|
||||
}
|
||||
|
||||
var tenantUser models.SystemTenantUser
|
||||
if err := models.Orm.QueryTable(new(models.SystemTenantUser)).
|
||||
Filter("uid", claims.UserID).
|
||||
Filter("tid", claims.TenantId).
|
||||
One(&tenantUser); err != nil {
|
||||
c.serveJSON(map[string]interface{}{"code": 401, "msg": "用户不存在"})
|
||||
return
|
||||
}
|
||||
|
||||
account := ""
|
||||
if tenantUser.Account != nil {
|
||||
account = strings.TrimSpace(*tenantUser.Account)
|
||||
}
|
||||
name := ""
|
||||
if tenantUser.Name != nil {
|
||||
name = strings.TrimSpace(*tenantUser.Name)
|
||||
}
|
||||
|
||||
// 角色名:按 group_id 查询本租户下的租户角色(cid=2)
|
||||
roleName := ""
|
||||
if tenantUser.GroupID > 0 {
|
||||
var role models.AdminRole
|
||||
if err := models.Orm.QueryTable(new(models.AdminRole)).
|
||||
Filter("id", tenantUser.GroupID).
|
||||
Filter("cid", 2).
|
||||
Filter("tenant_id", claims.TenantId).
|
||||
One(&role); err == nil {
|
||||
roleName = role.Name
|
||||
}
|
||||
}
|
||||
|
||||
// 部门 / 职位:来自员工档案,按账号 + 租户匹配
|
||||
department := ""
|
||||
position := ""
|
||||
if account != "" {
|
||||
var emp models.BackendEmployee
|
||||
qs := models.Orm.QueryTable(new(models.BackendEmployee)).Filter("account", account)
|
||||
if claims.TenantId > 0 {
|
||||
qs = qs.Filter("tid", int(claims.TenantId))
|
||||
}
|
||||
if err := qs.One(&emp); err == nil {
|
||||
if emp.Department != nil {
|
||||
department = strings.TrimSpace(*emp.Department)
|
||||
}
|
||||
if emp.Position != nil {
|
||||
position = strings.TrimSpace(*emp.Position)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 员工档案的 department 字段存的是组织ID,需转换为组织名称展示
|
||||
if department != "" {
|
||||
orgNames := (&BackendEmployeeFileController{}).efOrgNameMap(int(claims.TenantId))
|
||||
department = efOrgNameByID(orgNames, department)
|
||||
}
|
||||
|
||||
c.serveJSON(map[string]interface{}{
|
||||
"code": 200,
|
||||
"msg": "success",
|
||||
"data": map[string]interface{}{
|
||||
"account": account,
|
||||
"name": name,
|
||||
"role_name": roleName,
|
||||
"department": department,
|
||||
"position": position,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
// SendLoginCode 发送 backend 登录验证码
|
||||
func (c *BackendAuthController) SendLoginCode() {
|
||||
var req struct {
|
||||
|
||||
Reference in New Issue
Block a user