private async Task LoadRoles()
        {
            var roles = await _userEndPoint.GetAllRoles();

            foreach (var role in roles)
            {
                if (SelectedUserRoles.Contains(role.Value))
                {
                    AvailableRoles.Add(role.Value);
                }
            }
        }
示例#2
0
        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());
        }