public async Task RemoveFromRole([FromBody] RoleMembersModel model, string id) { var role = await _roleManager.FindByIdAsync(id); if (role == null) { throw this.Exception("找不到角色"); } var dbSet = _dbContext.Set <UserRole>(); var usersToRemove = dbSet.Where(e => e.RoleId == int.Parse(id) && model.Members.Contains(e.UserId)).ToList(); if (role.Rolename == "Administrator") { // 用户本身是管理员则不能移除本身管理员角色 var my = await _userManager.FindByNameAsync(User.Identity.Name); usersToRemove = usersToRemove.Where(e => e.UserId != ((User)my).Id).ToList(); } dbSet.RemoveRange(usersToRemove); _dbContext.SaveChanges(); }
public async Task AddToRole([FromBody] RoleMembersModel model, string id) { var role = await _roleManager.FindByIdAsync(id); if (role == null) { throw this.Exception("找不到角色"); } var newUsers = _dbContext.Set <User>().Where(e => model.Members.Contains(e.Id) && !e.Roles.Select(r => r.RoleId).Contains(int.Parse(id))).ToList(); newUsers.ForEach(e => e.Roles.Add(new UserRole() { RoleId = int.Parse(id), UserId = e.Id })); _dbContext.SaveChanges(); }