Пример #1
0
        //GET /admin/roles/edituserrole
        public async Task <IActionResult> EditUserRole(string id)
        {
            IdentityRole role = await roleManager.FindByIdAsync(id);

            List <AppUser> members    = new List <AppUser>();
            List <AppUser> nonMembers = new List <AppUser>();

            foreach (AppUser user in userManager.Users)
            {
                var list = await userManager.IsInRoleAsync(user, role.Name) ? members : nonMembers;

                list.Add(user);
            }

            RoleUserEdit roleUserEdit = new RoleUserEdit
            {
                Role       = role,
                Members    = members,
                NonMembers = nonMembers
            };

            return(View(roleUserEdit));
        }
Пример #2
0
        public async Task <IActionResult> EditUserRole(RoleUserEdit roleEdit)
        {
            IdentityResult result;

            foreach (string userId in roleEdit.AddIds ?? new string[] { })
            {
                AppUser user = await userManager.FindByIdAsync(userId);

                result = await userManager.AddToRoleAsync(user, roleEdit.RoleName);
            }

            foreach (string userId in roleEdit.DeleteIds ?? new string[] { })
            {
                AppUser user = await userManager.FindByIdAsync(userId);

                if (user.UserName == "superadmin")
                {
                    TempData["Error"] = "The admin role from superadmin user cannot be dropped!";
                }
                else
                {
                    AppUser appUser = await userManager.FindByNameAsync(User.Identity.Name);

                    if (user.UserName == appUser.UserName)
                    {
                        TempData["Error"] = "The role from currently logged user cannot be dropped!";
                    }
                    else
                    {
                        result = await userManager.RemoveFromRoleAsync(user, roleEdit.RoleName);
                    }
                }
            }

            return(Redirect(Request.Headers["Referer"].ToString()));
        }