|
|
@@ -40,10 +40,10 @@ func NewUserService(ctx context.Context) (svc *userService, err error) {
|
|
|
func (s *userService) Login(username, password string) (*request.UserInfo, error) {
|
|
|
record, err := s.Dao.Where("user_name", username).Where("status='10'").FindOne()
|
|
|
if err != nil {
|
|
|
- return nil, errors.New("系统异常")
|
|
|
+ return nil, gerror.New("系统异常")
|
|
|
}
|
|
|
if record == nil {
|
|
|
- return nil, errors.New("账号或密码错误,或限制登录")
|
|
|
+ return nil, gerror.New("账号或密码错误,或限制登录")
|
|
|
}
|
|
|
// 验证密码
|
|
|
if utils.EncryptPassword(password, record.UserSalt) != record.Password {
|
|
|
@@ -58,15 +58,10 @@ func (s *userService) Login(username, password string) (*request.UserInfo, error
|
|
|
return nil, err
|
|
|
}
|
|
|
// 权限
|
|
|
- //permissionService, err := permission.NewService(s.Tenant)
|
|
|
- //if err != nil {
|
|
|
- // return nil, errors.New("系统异常,请重新尝试")
|
|
|
- //}
|
|
|
- //userRoles, err := permissionService.GetRoleIdsByUser(userInfo.Id)
|
|
|
- //if err != nil {
|
|
|
- // return nil, err
|
|
|
- //}
|
|
|
- //userInfo.Roles = userRoles
|
|
|
+ userInfo.Roles, userInfo.Posts, userInfo.Groups, err = s.GetUserPermission(userInfo.Id)
|
|
|
+ if err != nil {
|
|
|
+ return nil, gerror.New("获取用户权限失败")
|
|
|
+ }
|
|
|
return userInfo, nil
|
|
|
}
|
|
|
|
|
|
@@ -120,8 +115,8 @@ func (s *userService) GetUserList(req *model.SysUserSearchReq) (total int, userL
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-// 获取部门下用户
|
|
|
-func (s userService) GetUserByDept(deptId int) (userList []*model.SysUser, err error) {
|
|
|
+// GetUserByDept 获取部门下用户
|
|
|
+func (s *userService) GetUserByDept(deptId int) (userList []*model.SysUser, err error) {
|
|
|
count, err := dao.NewSysDeptDao(s.Tenant).Where(dao.SysDept.Columns.Id, deptId).Where(dao.SysDept.Columns.Status, "10").Count()
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
@@ -133,8 +128,8 @@ func (s userService) GetUserByDept(deptId int) (userList []*model.SysUser, err e
|
|
|
return userList, err
|
|
|
}
|
|
|
|
|
|
-// 获取角色关联的用户
|
|
|
-func (s userService) GetUserByRole(roleId int) (userList []*model.SysUser, err error) {
|
|
|
+// GetUserByRole 获取角色关联的用户
|
|
|
+func (s *userService) GetUserByRole(roleId int) (userList []*model.SysUser, err error) {
|
|
|
count, err := dao.NewSysRoleDao(s.Tenant).Where(dao.SysRole.Columns.Id, roleId).Where(dao.SysRole.Columns.Status, "10").Count()
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
@@ -204,6 +199,33 @@ func (s *userService) GetUserInfoById(id int, withPwd ...bool) (user *model.SysU
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+// GetUserPermission 获取用户权限字符(角色、岗位、用户组)
|
|
|
+func (s *userService) GetUserPermission(userId int) ([]string, []string, []string, error) {
|
|
|
+ s.userRoleDao = dao.NewSysUserRoleDao(s.Tenant)
|
|
|
+ s.userPostDao = dao.NewSysUserPostDao(s.Tenant)
|
|
|
+ s.userGroupDao = dao.NewSysUserGroupDao(s.Tenant)
|
|
|
+ roleList, err := s.userRoleDao.As("user_role").LeftJoin(dao.SysRole.Table, "role", "user_role.role_id=role.id").
|
|
|
+ Fields(dao.SysRole.Columns.RoleKey).Where(s.userRoleDao.Columns.UserId, userId).Array()
|
|
|
+ if err != nil {
|
|
|
+ g.Log().Error(err)
|
|
|
+ return nil, nil, nil, err
|
|
|
+ }
|
|
|
+ postList, err := s.userPostDao.As("user_post").LeftJoin(dao.SysPost.Table, "post", "user_post.post_id=post.id").
|
|
|
+ Fields(dao.SysPost.Columns.PostCode).Where(s.userPostDao.Columns.UserId, userId).Array()
|
|
|
+ if err != nil {
|
|
|
+ g.Log().Error(err)
|
|
|
+ return nil, nil, nil, err
|
|
|
+ }
|
|
|
+ groupList, err := s.userGroupDao.As("user_group").LeftJoin(dao.SysGroup.Table, "group", "user_group.group_id=group.id").
|
|
|
+ Fields(dao.SysGroup.Columns.GroupCode).Where(s.userGroupDao.Columns.UserId, userId).Array()
|
|
|
+ if err != nil {
|
|
|
+ g.Log().Error(err)
|
|
|
+ return nil, nil, nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ return gconv.Strings(roleList), gconv.Strings(postList), gconv.Strings(groupList), err
|
|
|
+}
|
|
|
+
|
|
|
// GetUserRoleIds 获取用户角色
|
|
|
func (s *userService) GetUserRoleIds(userId int) (roleIds []int, err error) {
|
|
|
s.userRoleDao = dao.NewSysUserRoleDao(s.Tenant)
|