コード例 #1
0
        public async Task <IActionResult> ChangeUserRoles(string email)
        {
            var user = await _userManager.FindByEmailAsync(email);

            if (user == null)
            {
                return(NotFound());
            }

            List <SelectListItem> userRoles = new List <SelectListItem>();

            foreach (var role in await _roleManager.Roles.ToListAsync())
            {
                userRoles.Add(new SelectListItem()
                {
                    Text     = role.Name,
                    Value    = role.Name,
                    Selected = await _userManager.IsInRoleAsync(user, role.Name)
                });
            }

            var model = new ChangeUserRolesViewModel()
            {
                Email = email,
                Roles = userRoles
            };

            return(View(model));
        }
コード例 #2
0
        public async Task <IActionResult> ChangeUserRoles(ChangeUserRolesViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var user = await _userManager.FindByEmailAsync(model.Email);

            if (user != null && model.UserRoles != null)
            {
                IdentityResult resultAddToRole       = new IdentityResult();
                IdentityResult resultRemoveFromRoles = await _userManager.RemoveFromRolesAsync(user, await _userManager.GetRolesAsync(user));

                foreach (var role in model.UserRoles)
                {
                    if (await _roleManager.RoleExistsAsync(role))
                    {
                        resultAddToRole = await _userManager.AddToRoleAsync(user, role);
                    }
                }

                if (resultRemoveFromRoles.Succeeded && resultAddToRole.Succeeded)
                {
                    _logger.LogInformation(3, "Uprawnienia użytkownika zostały zmienione.");
                    return(RedirectToAction(nameof(Index), new { Message = ManageMessageId.ChangeUserRolesSuccess }));
                }

                AddErrors(resultRemoveFromRoles);
                AddErrors(resultAddToRole);
                return(View(model));
            }
            return(RedirectToAction(nameof(Index), new { Message = ManageMessageId.Error }));
        }
コード例 #3
0
        public async Task <IActionResult> EditRoles(string userId)
        {
            // получаем пользователя
            User user = await _userManager.FindByIdAsync(userId);

            if (user != null)
            {
                // получем список ролей пользователя
                var userRoles = await _userManager.GetRolesAsync(user);

                var allRoles = _roleManager.Roles.ToList();
                ChangeUserRolesViewModel model = new ChangeUserRolesViewModel
                {
                    UserId    = user.Id,
                    UserEmail = user.Email,
                    UserRoles = userRoles,
                    AllRoles  = allRoles
                };
                return(View(model));
            }

            return(NotFound());
        }