Esempio n. 1
0
        public async Task ManageRolesPost_ShouldReturnViewWithModelWhenRemoveFromRolesAsyncFailed()
        {
            // Arrange
            IdentityRoleViewModel formModel = new IdentityRoleViewModel()
            {
                Username = FirstUserUsername
            };

            Mock <RoleManager <IdentityRole> > roleManager = this.GetAndSetRoleManagerMock();

            Mock <UserManager <User> > userManager = this.GetAndSetUserManagerMock();

            userManager
            .Setup(um => um.RemoveFromRolesAsync(It.IsAny <User>(), It.IsAny <List <string> >()))
            .ReturnsAsync(IdentityResult.Failed(new IdentityError {
                Description = "test"
            }));

            HomeController controller = new HomeController(null, userManager.Object, roleManager.Object);

            // Act
            IActionResult actionResult = await controller.ManageRoles(FirstUserId, formModel);

            // Assert
            actionResult.Should().BeOfType <ViewResult>();

            object model = actionResult.As <ViewResult>().Model;

            model.Should().BeOfType <IdentityRoleViewModel>();

            IdentityRoleViewModel returnedModel = model.As <IdentityRoleViewModel>();

            returnedModel.Username.Should().Be(formModel.Username);
        }
        public async Task <ActionResult> DeleteConfirmed(string id, IdentityRoleViewModel viewModel)
        {
            var role = await _roleManager.FindByIdAsync(id);

            if (role == null)
            {
                ModelState.AddModelError(String.Empty, "Role not found.");
                return(View(viewModel));
            }

            if (role.NormalizedName == "ADMIN")
            {
                ModelState.AddModelError(String.Empty, "Role 'Admin' cannot be deleted.");
                return(View(viewModel));
            }

            var result = await _roleManager.DeleteAsync(role);

            if (!result.Succeeded)
            {
                AddErrors(result);
                return(View(viewModel));
            }
            else
            {
                return(RedirectToAction("Index"));
            }
        }
        public async Task <ActionResult> Edit([Bind("RoleId,RoleName")] IdentityRoleViewModel roleView)
        {
            if (ModelState.IsValid)
            {
                var role = await _roleManager.FindByIdAsync(roleView.RoleId);

                role.Name = roleView.RoleName;
                var result = await _roleManager.UpdateAsync(role);

                // Fast exit if editing role 'admin'
                if (role.NormalizedName == "ADMIN")
                {
                    ModelState.AddModelError(string.Empty, "Admin role cannot be edited");
                    return(View(roleView));
                }

                if (result.Succeeded)
                {
                    return(RedirectToAction("Index"));
                }
                else
                {
                    AddErrors(result);
                }
            }

            return(View(roleView));
        }
Esempio n. 4
0
        private IEnumerable <AdminViewModels.AppUserAdminViewModel> ConvertAdminUsersToViewModel(IEnumerable <AppUserAdmin> adminUsers, List <ApplicationRole> roller)
        {
            var adminUserViewList = new List <AdminViewModels.AppUserAdminViewModel>();


            foreach (var user in adminUsers)
            {
                var roleVMList = new List <IdentityRoleViewModel>();

                var adminUserView = new AdminViewModels.AppUserAdminViewModel
                {
                    Id          = user.Id,
                    Email       = user.Email,
                    PhoneNumber = user.PhoneNumber,
                    SkapadDatum = user.SkapadDatum,
                    SkapadAv    = user.SkapadAv,
                    AndradDatum = user.AndradDatum,
                    AndradAv    = user.AndradAv,
                    Roles       = _portalSosService.HamtaAstridAnvandaresRoller(user.Id).Select(x => x.BeskrivandeNamn).ToList()
                };

                //Skapa lista över roller och markera valda roller för aktuell användare
                foreach (var roll in roller)
                {
                    var roleVm = new IdentityRoleViewModel
                    {
                        Id   = roll.Id,
                        Name = roll.BeskrivandeNamn
                    };

                    if (adminUserView.Roles.Contains(roll.BeskrivandeNamn))
                    {
                        roleVm.Selected = true;
                    }
                    roleVMList.Add(roleVm);
                }

                //Skapa kommaseparerad textsträng över användarens roller
                var rolesStr = String.Empty;
                foreach (var role in adminUserView.Roles)
                {
                    if (rolesStr.IsEmpty())
                    {
                        rolesStr = role;
                    }
                    else
                    {
                        rolesStr = rolesStr + ", " + role;
                    }
                }

                adminUserView.StringOfRoles = rolesStr;
                adminUserView.ListOfRoles   = roleVMList;
                adminUserViewList.Add(adminUserView);
            }
            return(adminUserViewList);
        }
Esempio n. 5
0
        public async Task <IActionResult> CreateRole(IdentityRoleViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            await _adminService.CreateRole(model);

            return(View(nameof(Index)));
        }
Esempio n. 6
0
        public async Task <IActionResult> ManageRoles(string id)
        {
            var user = await this.userManager.FindByIdAsync(id);

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

            IdentityRoleViewModel viewModel = await GetRoleViewModel(user);

            return(View(viewModel));
        }
Esempio n. 7
0
        //[Authorize (Roles = "Admin")]
        public async Task <IActionResult> CreateRoleAsync(IdentityRoleViewModel role)
        {
            var            newRole    = new IdentityRole(role.RoleName);
            IdentityResult roleResult = new IdentityResult();
            var            roleExist  = await this.roleManager.RoleExistsAsync(newRole.Name);

            if (!roleExist)
            {
                roleResult = await this.roleManager.CreateAsync(newRole);
            }

            return(Ok(new { role = roleResult.Succeeded }));
        }
Esempio n. 8
0
        public async Task <IdentityRole> UpdateRole(IdentityRoleViewModel role)
        {
            if (role == null || role.Name == null || role.Name == string.Empty)
            {
                throw new Exception("Updated role can not be null");
            }

            var newRole = new IdentityRole {
                Name = role.Name
            };

            await _roleManager.UpdateAsync(newRole);

            return(newRole);
        }
Esempio n. 9
0
        private List <IdentityRoleViewModel> ConvertRolesToVM(List <ApplicationRole> roller)
        {
            var rollerList = new List <IdentityRoleViewModel>();

            foreach (var roll in roller)
            {
                var roleVM = new IdentityRoleViewModel()
                {
                    Id       = roll.Id,
                    Name     = roll.BeskrivandeNamn,
                    Selected = false
                };
                rollerList.Add(roleVM);
            }

            return(rollerList);
        }
Esempio n. 10
0
        public async Task <IdentityRole> CreateRole(IdentityRoleViewModel role)
        {
            if (role == null || role.Name == string.Empty || role.Name == null)
            {
                throw new Exception("New role can not be null or empty");
            }

            var identityRole = new IdentityRole {
                Name = role.Name
            };

            if (!await _roleManager.RoleExistsAsync(role.Name))
            {
                await _roleManager.CreateAsync(identityRole);
            }

            return(identityRole);
        }
Esempio n. 11
0
        public async Task <IdentityRole> DeleteRole(IdentityRoleViewModel role)
        {
            if (role == null || role.Name == null || role.Name == string.Empty)
            {
                throw new Exception("Can not delete");
            }

            var identityRole = new IdentityRole {
                Name = role.Name
            };

            if (await _roleManager.RoleExistsAsync(role.Name))
            {
                await _roleManager.DeleteAsync(identityRole);
            }

            return(identityRole);
        }
Esempio n. 12
0
        public async Task ManageRolesPost_ShouldReturnRedirectToActionWhenValidUserId()
        {
            // Arrange
            string tempDataSuccessMessage = null;

            IdentityRoleViewModel formModel = new IdentityRoleViewModel()
            {
                SelectedRoles = new List <string>()
                {
                    WebConstants.AdministratorRole
                },
                Username = FirstUserUsername
            };

            Mock <RoleManager <IdentityRole> > roleManager = this.GetAndSetRoleManagerMock();

            Mock <UserManager <User> > userManager = this.GetAndSetUserManagerMock();

            userManager
            .Setup(um => um.RemoveFromRolesAsync(It.IsAny <User>(), It.IsAny <List <string> >()))
            .ReturnsAsync(IdentityResult.Success);

            userManager
            .Setup(um => um.AddToRolesAsync(It.IsAny <User>(), It.IsAny <List <string> >()))
            .ReturnsAsync(IdentityResult.Success);

            Mock <ITempDataDictionary> tempData = new Mock <ITempDataDictionary>();

            tempData.SetupSet(t => t["SuccessMessage"] = It.IsAny <string>())
            .Callback((string key, object successMessage) => tempDataSuccessMessage = successMessage as string);

            HomeController controller = new HomeController(null, userManager.Object, roleManager.Object);

            controller.TempData = tempData.Object;

            // Act
            IActionResult actionResult = await controller.ManageRoles(FirstUserId, formModel);

            // Assert
            actionResult.Should().BeOfType <RedirectToActionResult>();
            actionResult.As <RedirectToActionResult>().ActionName.Should().Be("AllUsers");

            tempDataSuccessMessage.Should().Be(ManageRolesMessageSuccessfull);
        }
Esempio n. 13
0
        public static void SeedRoles
            (RoleManager <IdentityRoleViewModel> roleManager)
        {
            if (!roleManager.RoleExistsAsync
                    ("Administrator").Result)
            {
                IdentityRoleViewModel role = new IdentityRoleViewModel();
                role.Name      = "Administrator";
                role.Descricao = "Executar todas as operações.";
                IdentityResult roleResult = roleManager.
                                            CreateAsync(role).Result;
            }

            if (!roleManager.RoleExistsAsync
                    ("Aluno").Result)
            {
                IdentityRoleViewModel role = new IdentityRoleViewModel();
                role.Name      = "Aluno";
                role.Descricao = "Executar as operações do Aluno";
                IdentityResult roleResult = roleManager.
                                            CreateAsync(role).Result;
            }

            if (!roleManager.RoleExistsAsync
                    ("Professor").Result)
            {
                IdentityRoleViewModel role = new IdentityRoleViewModel();
                role.Name      = "Professor";
                role.Descricao = "Executar as operações do Professor";
                IdentityResult roleResult = roleManager.
                                            CreateAsync(role).Result;
            }

            if (!roleManager.RoleExistsAsync
                    ("Usuario").Result)
            {
                IdentityRoleViewModel role = new IdentityRoleViewModel();
                role.Name      = "Professor";
                role.Descricao = "Executar as operações do Usuario";
                IdentityResult roleResult = roleManager.
                                            CreateAsync(role).Result;
            }
        }
Esempio n. 14
0
        private async Task <IdentityRoleViewModel> GetRoleViewModel(User user)
        {
            var currentRoles = await this.userManager.GetRolesAsync(user);

            var viewModel = new IdentityRoleViewModel
            {
                Username       = user.UserName,
                SelectedRoles  = currentRoles,
                AvailableRoles = this.roleManager
                                 .Roles
                                 .ToList()
                                 .Select(r => new SelectListItem()
                {
                    Text  = r.Name.Replace("User", " User"),
                    Value = r.Name
                }).ToList()
            };

            return(viewModel);
        }
        public async Task <ActionResult> Create(IdentityRoleViewModel roleView)
        {
            if (ModelState.IsValid)
            {
                // Convert view model to a model
                var newRole = new IdentityRole();
                newRole.Name = roleView.RoleName;
                var newRoleResult = await _roleManager.CreateAsync(newRole);

                if (newRoleResult.Succeeded)
                {
                    return(RedirectToAction("Index"));
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Failed to create role");
                }
            }

            // If here, then an error occured.
            return(View(roleView));
        }
Esempio n. 16
0
        public async Task ManageRolesGet_ShouldReturnViewWithCorrectModelWhenValidUserId()
        {
            // Arrange
            Mock <RoleManager <IdentityRole> > roleManager = GetAndSetRoleManagerMock();

            Mock <UserManager <User> > userManager = GetAndSetUserManagerMock();

            HomeController controller = new HomeController(null, userManager.Object, roleManager.Object);

            // Act
            IActionResult actionResult = await controller.ManageRoles(FirstUserId);

            // Arrange
            actionResult.Should().BeOfType <ViewResult>();

            object model = actionResult.As <ViewResult>().Model;

            model.Should().BeOfType <IdentityRoleViewModel>();

            IdentityRoleViewModel returnedModel = model.As <IdentityRoleViewModel>();

            returnedModel.Username.Should().Be(FirstUserUsername);
        }
Esempio n. 17
0
        public async Task <IActionResult> ManageRoles(string id, IdentityRoleViewModel model)
        {
            var user = await this.userManager.FindByIdAsync(id);

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

            if (!ModelState.IsValid)
            {
                return(View(await GetRoleViewModel(user)));
            }

            var currentRoles = await this.userManager.GetRolesAsync(user);

            var result = await this.userManager.RemoveFromRolesAsync(user, currentRoles);

            if (!result.Succeeded)
            {
                AddErrors(result);

                return(View(model));
            }

            result = await this.userManager.AddToRolesAsync(user, model.SelectedRoles);

            if (!result.Succeeded)
            {
                AddErrors(result);

                return(View(model));
            }

            this.TempData["SuccessMessage"] = $"Successfuly changed roles for user \"{user.UserName}\"!";
            return(RedirectToAction(nameof(AllUsers)));
        }