private async Task LoadRoles() { var roles = await _userEndPoint.GetAllRoles(); foreach (var role in roles) { if (SelectedUserRoles.Contains(role.Value)) { AvailableRoles.Add(role.Value); } } }
public async Task <IActionResult> OnPostAsync(string id, UserPostModel model, IFormCollection collection) { await Init(id); if (!ModelState.IsValid) { return(Page()); } var unselectedRoles = SelectedUserRoles.Where(r => !model.SelectedRoles?.Contains(r) ?? false).ToList(); var newRoles = model.SelectedRoles?.Where(r => !SelectedUserRoles.Contains(r)).ToList(); var rolesUpdated = false; if (unselectedRoles.Any()) { await _userManager.RemoveFromRolesAsync(SelectedUser, unselectedRoles); rolesUpdated = true; } if (!newRoles.IsNullOrEmpty()) { await _userManager.AddToRolesAsync(SelectedUser, newRoles); rolesUpdated = true; } if (rolesUpdated) { EZmsInMemoryCache.Remove($"EZms:principal:userroles:{id}"); } SelectedUser.Email = model.Email; SelectedUser.PhoneNumber = model.PhoneNumber; await _userManager.UpdateAsync(SelectedUser); if (unselectedRoles.Any() || newRoles.Any()) { SelectedUserRoles = await GetUserRoles(SelectedUser); } return(Page()); }