Exemple #1
0
        public async Task <IActionResult> DeleteRole(string roleId)
        {
            var role = await RoleMangerService.FindByIdAsync(roleId);

            if (role == null)
            {
                ViewBag.ErrorMessage = $"Role with id: {roleId} cannot be found";
                return(View("NotFound"));
            }
            else
            {
                try
                {
                    var result = await RoleMangerService.DeleteAsync(role);

                    if (result.Succeeded)
                    {
                        return(RedirectToAction("ListRole"));
                    }
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError("", error.Description);
                    }
                    return(View("LisrRole"));
                }

                catch (DbUpdateException e)
                {
                    logger.LogError($"Error deleting role {e}");
                    ViewBag.ErrorTitle   = $"{role.Name} role is in use";
                    ViewBag.ErrorMessage = $"{role.Name} role cannot be deleted as there are users in this role";
                    return(View("Error"));
                }
            }
        }
Exemple #2
0
        public async Task <IActionResult> EditUsersInRole(List <UserRoleViewModel> model, string roleId)
        {
            var role = RoleMangerService.FindByIdAsync(roleId);

            if (role == null)
            {
                ViewBag.ErrorMessage = $"The role with id : {roleId} cannot be found";
                return(View("NotFound"));
            }

            for (int i = 0; i < model.Count; i++)
            {
                var user = await UserManager.FindByIdAsync(model[i].UserId);

                IdentityResult result   = null;
                var            isInRole = await UserManager.IsInRoleAsync(user, role.Result.Name);

                if (model[i].IsSelected && !(isInRole))
                {
                    result = await UserManager.AddToRoleAsync(user, role.Result.Name);
                }
                else if (!model[i].IsSelected && isInRole)
                {
                    result = await UserManager.RemoveFromRoleAsync(user, role.Result.Name);
                }
                else
                {
                    continue;
                }

                if (result.Succeeded)
                {
                    if (i < model.Count - 1)
                    {
                        continue;
                    }
                    else
                    {
                        return(RedirectToAction("EditRole", new { id = roleId }));
                    }
                }
            }
            return(RedirectToAction("EditRole", new { id = roleId }));
        }
Exemple #3
0
        public async Task <IActionResult> EditUsersInRole(string roleId)
        {
            ViewBag.roleId = roleId;
            var role = RoleMangerService.FindByIdAsync(roleId);

            if (role == null)
            {
                ViewBag.ErrorMessage = $"The role with id : {roleId} cannot be found";
                return(View("NotFound"));
            }

            /*
             * var usersInRole = await UserManager.GetUsersInRoleAsync(role.Name);
             * if (usersInRole == null)
             * {
             *  ViewBag.ErrorMessage = $"No users for this role id {roleId}.";
             * }
             */

            var model          = new List <UserRoleViewModel>();
            var allUsers       = UserManager.Users;
            var UserInThisRole = await UserManager.GetUsersInRoleAsync(role.Result.Name);

            foreach (var user in allUsers)
            {
                var userRoleViewModel = new UserRoleViewModel
                {
                    UserId     = user.Id,
                    UserName   = user.UserName,
                    IsSelected = false
                };

                if (UserInThisRole.Any(x => x.Id == userRoleViewModel.UserId))
                {
                    userRoleViewModel.IsSelected = true;
                }

                model.Add(userRoleViewModel);
            }
            return(View(model));
        }
Exemple #4
0
        public async Task <IActionResult> CreateRole(CreateRoleViewModel model)
        {
            if (ModelState.IsValid)
            {
                IdentityRole identityRole = new IdentityRole
                {
                    Name = model.RoleName
                };

                var result = await RoleMangerService.CreateAsync(identityRole);

                if (result.Succeeded)
                {
                    return(RedirectToAction("ListRole", "Administrator"));
                }
                foreach (IdentityError error in result.Errors)
                {
                    ModelState.AddModelError("", error.Description);
                }
            }

            return(View(model));
        }
Exemple #5
0
        public async Task <IActionResult> EditRole(string id)
        {
            var role = await RoleMangerService.FindByIdAsync(id);

            if (role != null)
            {
                var model = new EditRoleViewModel
                {
                    Id       = role.Id,
                    RoleName = role.Name,
                };


                foreach (var user in await UserManager.GetUsersInRoleAsync(role.Name))
                {
                    model.Users.Add(user.UserName);
                }

                return(View(model));
            }

            ViewBag.ErrorMassage = $"role with id: {id} cannot be found!";
            return(View("NotFound"));
        }
Exemple #6
0
        public async Task <IActionResult> EditRole(EditRoleViewModel model)
        {
            var role = await RoleMangerService.FindByIdAsync(model.Id);

            if (role != null)
            {
                role.Name = model.RoleName;
                var result = await RoleMangerService.UpdateAsync(role);

                if (result.Succeeded)
                {
                    return(RedirectToAction("ListRole"));
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError("", error.Description);
                }
                //in case there were errors, return to edit
                return(View(model));
            }

            ViewBag.ErrorMassage = $"role with id: {model.Id} cannot be found!";
            return(View("NotFound"));
        }