public async Task <IActionResult> Edit(ModifyUserRoles model)
        {
            if (ModelState.IsValid)
            {
                IdentityResult result;
                foreach (var id in model.IdsToAdd)
                {
                    var user = await _userManager.FindByIdAsync(id);

                    if (user == null)
                    {
                        break;
                    }
                    if (await _userManager.IsInRoleAsync(user, model.RoleName))
                    {
                        break;
                    }

                    result = await _userManager.AddToRoleAsync(user, model.RoleName);

                    if (!result.Succeeded)
                    {
                        AddErrorsFromResult(result);
                    }
                }

                foreach (var id in model.IdsToRemove)
                {
                    var user = await _userManager.FindByIdAsync(id);

                    if (user == null)
                    {
                        break;
                    }
                    if (!await _userManager.IsInRoleAsync(user, model.RoleName))
                    {
                        break;
                    }

                    result = await _userManager.RemoveFromRoleAsync(user, model.RoleName);

                    if (!result.Succeeded)
                    {
                        AddErrorsFromResult(result);
                    }
                }
            }

            if (ModelState.IsValid)
            {
                return(RedirectToAction("Index"));
            }

            return(await Edit(model.RoleId));
        }
Example #2
0
        public async Task <IActionResult> GetAllRoles(string userId)
        {
            var user      = _repo.User.FindByCondition(u => u.Id == userId).SingleOrDefault();
            var userRoles = await _userManager.GetRolesAsync(_mapper.Map <User>(user));

            var model = new ModifyUserRoles()
            {
                UserId         = userId,
                Roles          = (userRoles.Count() > 0) ? userRoles.ToArray() : new string[0],
                AvailableRoles = _userManager.GetRoles().ToList()
            };

            return(PartialView("_AvailableRoles", model));
        }
Example #3
0
        public async Task <IActionResult> DeleteRole([FromBody] ModifyUserRoles deleteRole)
        {
            var newRoles = await _userManager.RemoveFromRolesAsync(deleteRole.UserId, deleteRole.Roles);

            return(Ok(newRoles));
        }
Example #4
0
        public async Task <IActionResult> AddRole([FromBody] ModifyUserRoles addRole)
        {
            var newRoles = await _userManager.AddToRolesAsync(addRole.UserId, addRole.Roles);

            return(Ok(newRoles));
        }