public async Task <ActionResult> AddRolesToUser(Guid userId, [FromBody] UserRolesRequest userRoles) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var roles = await _userService.UpdateRoles(userId, userRoles.Roles); if (roles == null) { return(NotFound("User not found")); } return(Created("user/roles", roles)); }
public async Task <ResponseMessage> PulshUserRole(UserRolesRequest rolesRequest) { var users = DataBaseUser.TokenModel; _Logger.LogInformation($"用户{users?.UserName ?? ""},其ID:({users?.Id ?? ""}) 添加用户角色表:\r\n" + (rolesRequest != null ? JsonHelpers.ToJSON(rolesRequest) : "")); var response = new ResponseMessage(); try { response = await _RolesManager.AddUserRoles(rolesRequest); } catch (Exception el) { _Logger.LogError($"用户{users?.UserName ?? ""}({users?.Id ?? ""})添加用户角色表报错:\r\n{el.ToString()}"); response.Code = ResponseCodeDefines.ArgumentNullError; response.Message = $"添加用户角色表报错:{el.Message}"; } return(response); }
/// <summary> /// 添加用户角色表 /// </summary> /// <param name="userRolesRequest"></param> /// <returns></returns> public async Task <ResponseMessage> AddUserRoles(UserRolesRequest userRolesRequest) { var users = DataBaseUser.TokenModel; var response = new ResponseMessage(); if (userRolesRequest == null) { throw new Exception(nameof(userRolesRequest)); } try { var scopeList = await _IRolesStore.BrowsingScope(users.Id, "Role_Add_Edit"); if (scopeList == null) { response.Message = "暂无权限,请联系管理"; response.Code = ResponseCodeDefines.NotAllow; return(response); } ////1.1: 找到所有的角色ID var oldRols = await _IRolesStore.GetUserRoleAsync().Where(u => u.UserId.Equals(userRolesRequest.UserId)).Select(p => p.RoleId).ToListAsync(); //请求的权限个数大于原来的原有权限个数就是新增权限,小于的话就是要删除, if (oldRols.Count() > userRolesRequest.RoleId.Count()) { var deleteRoleId = oldRols.Except(userRolesRequest.RoleId).ToList(); //差集 //1.1. 删除用户角色表 await _IRolesStore.DeleteUserRoles(userRolesRequest.UserId, deleteRoleId); //1.2.删除权限扩展表 var permissionList = await _IRolesStore.GetRolePermissionsAsync().Where(p => deleteRoleId.Contains(p.RoledId)).Select(u => u.PermissionsId).ToListAsync(); await _IRolesStore.DeletePermissionEx(userRolesRequest.UserId, permissionList); } //新增 else { var addRoleId = userRolesRequest.RoleId.Except(oldRols); //差集 var model = new List <UserRole>(); foreach (var roleId in addRoleId) { model.Add(new UserRole { RoleId = roleId, UserId = userRolesRequest.UserId }); } ////1.2: 找到所有的角色的权限 var permissionList = await _IRolesStore.GetRolePermissionsAsync().Where(p => addRoleId.Contains(p.RoledId)).ToListAsync(); if (permissionList.Count() == 0) { response.Message = "该角色的权限项未指定.请先完善"; response.Code = ResponseCodeDefines.ArgumentNullError; return(response); } ////1.3: 构建权限扩展表 List <PermissionExpansion> PermissionEx = new List <PermissionExpansion>(); foreach (var item in permissionList) { PermissionEx.Add(new PermissionExpansion { Id = Guid.NewGuid().ToString(), OrganizationId = item.OrganizationScope, OrganizationName = "", PermissionId = item.PermissionsId, PermissionName = "", UserId = userRolesRequest.UserId, UserName = userRolesRequest.UserName }); } await _IRolesStore.InsertUserRole(model); await _IRolesStore.InsertRolePermissionEX(PermissionEx); } } catch (Exception el) { throw new Exception(el.Message); } return(response); }