Exemplo n.º 1
0
        public async Task <IActionResult> RemoveFromRole(AddUserToRoleFormModel model)
        {
            var user = await this.userManager.FindByIdAsync(model.UserId);

            if (!await this.IdentityDetailsValid(user, model.Role))
            {
                ModelState.AddModelError(string.Empty, $"Invalid Identity Details for {user}");
            }

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

            bool IsUserInRole = await this.userManager.IsInRoleAsync(user, model.Role);

            if (!IsUserInRole)
            {
                TempData.AddSuccessMessage($"User {user.UserName} is not in Role {model.Role}");
                return(RedirectToAction(nameof(Index)));
            }

            await this.userManager.RemoveFromRoleAsync(user, model.Role);

            TempData.AddSuccessMessage($"User {user.UserName} is removed from role {model.Role}");
            return(RedirectToAction(nameof(Index)));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> AddToRole(AddUserToRoleFormModel model)
        {
            var roleExists = await this.roleManager.RoleExistsAsync(model.Role);

            var user = await this.userManager.FindByIdAsync(model.UserId);

            var userExists = user != null;

            if (!roleExists || !userExists)
            {
                ModelState.AddModelError(string.Empty, "User or role does not exists.");
                return(RedirectToAction(nameof(Index)));
            }

            if (!ModelState.IsValid)
            {
                ModelState.AddModelError(string.Empty, "Invalid model state.");
                return(RedirectToAction(nameof(Index)));
            }

            await this.userManager.AddToRoleAsync(user, model.Role);

            // If the profile does not exists create new teacher profile
            if (model.Role == TeacherRole && !usersService.TeacherProfileExists(model.UserId))
            {
                await usersService.CreateTeacherProfile(model.UserId);
            }

            TempData.AddSuccessMessage($"User {user.UserName} successfully added to the {model.Role} role.");
            return(RedirectToAction(nameof(Index)));
        }
Exemplo n.º 3
0
        public async Task <IActionResult> AddToRole(AddUserToRoleFormModel model)
        {
            var roleExists = await this.roleManager.RoleExistsAsync(model.Role);

            var user = await this.userManager.FindByIdAsync(model.UserId);

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

            var userExists = user != null;

            if (!userExists || !roleExists)
            {
                ModelState.AddModelError(string.Empty, "Invalid identity details.");
            }

            if (!ModelState.IsValid)
            {
                return(RedirectToAction(nameof(Index)));
            }
            if (userRole.Count > 0)
            {
                await userManager.RemoveFromRoleAsync(user, userRole.FirstOrDefault());
            }

            await this.userManager.AddToRoleAsync(user, model.Role);

            TempData.AddSuccessMessage($"User {user.UserName} added to {model.Role} role.");
            return(RedirectToAction(nameof(Index)));
        }
Exemplo n.º 4
0
        public async Task <IActionResult> AddToRole(AddUserToRoleFormModel model)
        {
            var roleExists = await this.roleManager.RoleExistsAsync(model.Role);

            var user = await this.userManager.FindByIdAsync(model.UserId);

            var userExists = user != null;

            if (!roleExists || !userExists)
            {
                ModelState.AddModelError(string.Empty, WebConstants.InvalidIdentityDetailsOrUser);
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var role = model.Role;

            var success = await this.users.ChangeUserRoleAsync(user, role);

            if (!success)
            {
                return(BadRequest());
            }

            TempData.AddSuccessMessage(String.Format(WebConstants.TempDataUserRoleSuccessfullChange, user.Name, model.Role));

            return(RedirectToAction(nameof(Index)));
        }
Exemplo n.º 5
0
        public async Task <IActionResult> AddToRole(AddUserToRoleFormModel model)
        {
            bool roleExists = await this.roleManager.RoleExistsAsync(model.Role);

            User user = await this.userManager.FindByIdAsync(model.UserId);

            bool userExists = user != null;

            bool isAlreadyInRole = this.users.IsAlreadyInRole(user.Id);

            if (!roleExists || !userExists)
            {
                ModelState.AddModelError(string.Empty, "Invalid identity details.");
            }

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

            if (!isAlreadyInRole)
            {
                await this.userManager.AddToRoleAsync(user, model.Role);

                TempData.AddSuccessMessage($"User {user.UserName} successfully added to {model.Role} role.");

                return(RedirectToAction(nameof(Index)));
            }

            await this.userManager.AddToRoleAsync(user, model.Role);

            TempData.AddSuccessMessage($"User {user.UserName} successfully added to {model.Role} role.");

            return(RedirectToAction(nameof(Index)));
        }
Exemplo n.º 6
0
        public async Task <IActionResult> AddToRole(AddUserToRoleFormModel model)
        {
            var roleExists = await this.roleManager.RoleExistsAsync(model.Role);

            var userExists = await this.userManager.FindByIdAsync(model.UserId) != null;

            var user = await this.userManager.FindByIdAsync(model.UserId);

            if (!roleExists || !userExists)
            {
                ModelState.AddModelError(string.Empty, "Invalid identity details!");
            }

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

            if (model.Role == WebConstants.NoRole)
            {
                var roles = await userManager.GetRolesAsync(user);

                await this.userManager.RemoveFromRolesAsync(user, roles);

                TempData.AddSuccessMessage($@"User {user.UserName} removed from role\s {string.Join(", ", roles)}!");
                return(RedirectToAction(nameof(Index)));
            }

            await this.userManager.AddToRoleAsync(user, model.Role);

            TempData.AddSuccessMessage($"User {user.UserName} successfully added to role {model.Role}!");

            return(this.RedirectToAction(nameof(this.Index)));
        }
Exemplo n.º 7
0
        public async Task <IActionResult> AddToRole([FromBody] AddUserToRoleFormModel model)
        {
            bool roleExists = await this.roleManager.RoleExistsAsync(model.Role);

            User user = await this.userManager.FindByIdAsync(model.UserId);

            bool userExists = user != null;

            bool isAlreadyInRole = this.users.IsAlreadyInRole(user.Id);

            if (!roleExists || !userExists)
            {
                ModelState.AddModelError(string.Empty, "Invalid identity details.");
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            if (!isAlreadyInRole)
            {
                await this.userManager.AddToRoleAsync(user, model.Role);

                return(Ok());
            }

            await this.userManager.AddToRoleAsync(user, model.Role);

            return(Ok());
        }
Exemplo n.º 8
0
        public async Task <IActionResult> AddToRole(AddUserToRoleFormModel model)
        {
            var roleExists = await this.roleManager.RoleExistsAsync(model.Role);

            var user = await this.userManager.FindByIdAsync(model.UserId);

            if (!roleExists || user == null)
            {
                this.ModelState.AddModelError(string.Empty, "Invalid identity details.");
            }

            if (!this.ModelState.IsValid)
            {
                return(this.RedirectToAction(nameof(this.Index)));
            }

            await this.userManager.AddToRoleAsync(user, model.Role);

            if (user != null)
            {
                this.TempData.AddSuccessMessage($"Successfully added user: {user.UserName} to the {model.Role} role.");
            }

            return(this.RedirectToAction(nameof(this.Index)));
        }
Exemplo n.º 9
0
        public async Task <IActionResult> AddToRole(AddUserToRoleFormModel model)
        {
            var user = await this.userManager.FindByIdAsync(model.UserId);

            var role       = model.Role;
            var roleExists = await this.roleManager.RoleExistsAsync(role);

            var userExists   = user != null;
            var userIsInRole = await this.userManager.IsInRoleAsync(user, role);


            if (!roleExists || !userExists)
            {
                ModelState.TryAddModelError(string.Empty, InvalidIdentityDetails);
            }


            if (!ModelState.IsValid)
            {
                TempData.AddErrorMessage(ErrorModelState());
                return(RedirectToAction(nameof(AllUsers)));
            }
            await this.userManager.AddToRoleAsync(user, model.Role);

            var userName = user.FirstName;

            TempData.AddSuccessMessage(UserAddedSuccessFullToRole(userName, model.Role));
            return(RedirectToAction(nameof(AllUsers)));
        }
        public async Task <IActionResult> ChangeRole(AddUserToRoleFormModel model)
        {
            var roleExists = await this.roleManager.RoleExistsAsync(model.Role);

            var user = await this.userManager.FindByIdAsync(model.UserId);

            var userExists = user != null;

            if (!roleExists || !userExists)
            {
                this.ModelState.AddModelError(string.Empty, WebConstants.ModelStateCustomError);
            }

            if (!this.ModelState.IsValid)
            {
                return(this.RedirectToAction(nameof(Index)));
            }

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

            if (userInRoles.Any())
            {
                await this.userManager.RemoveFromRolesAsync(user, userInRoles);

                await this.userManager.AddToRoleAsync(user, model.Role);
            }

            await this.userManager.AddToRoleAsync(user, model.Role);

            TempData.AddSuccessMessage(string.Format(WebConstants.SuccessMessageRoleChangePlaceholder, user.UserName, model.Role));
            return(RedirectToAction(nameof(Index)));
        }
Exemplo n.º 11
0
        public async Task AddToRoleWithInvalidModelStateRoleShouldReturnBadRequest()
        {
            string errorMessage = null;
            var    userManager  = UserManagerMock.New;

            userManager
            .Setup(u => u.FindByIdAsync(It.IsAny <string>()))
            .ReturnsAsync(this.users.First());
            var roleManager = RoleManagerMock.New;

            roleManager
            .Setup(m => m.RoleExistsAsync(It.IsAny <string>()))
            .ReturnsAsync(true);
            var controller = new UsersController(userManager.Object, roleManager.Object);
            var tempData   = new Mock <ITempDataDictionary>();

            tempData
            .SetupSet(t => t[TempDataErrorMessageKey] = It.IsAny <string>())
            .Callback((string key, object message) => errorMessage = message as string);
            controller.TempData = tempData.Object;
            controller.ModelState.AddModelError(string.Empty, string.Empty);
            var model = new AddUserToRoleFormModel
            {
                Role   = string.Empty,
                UserId = string.Empty
            };

            var result = await controller.AddToRole(model);

            this.AssertAddToRoleInvalidRequest(errorMessage, model, result, DefaultErrorMessage);
        }
Exemplo n.º 12
0
        public async Task <IActionResult> AddToRole(AddUserToRoleFormModel model)
        {
            var roleExists = await this.roleManager.RoleExistsAsync(model.Role);

            var user = await this.userManager.FindByIdAsync(model.UserId);

            var userExists = user != null;

            if (!roleExists || !userExists)
            {
                ModelState.AddModelError(string.Empty, "Invalid identity details!");
            }

            if (!ModelState.IsValid)
            {
                TempData.AddErrorMessage("Invalid identity details! No roles updated!");
                return(RedirectToAction(nameof(UsersController.Index)));
            }

            if (model.Role == WebConstants.UserRole)
            {
                await this.userManager.RemoveFromRoleAsync(user, WebConstants.AdministratorRole);
            }
            else
            {
                await this.userManager.AddToRoleAsync(user, model.Role);
            }

            TempData.AddSuccessMessage($"User {user.UserName} successfully added to the {model.Role} role.");

            return(RedirectToAction(nameof(UsersController.Index)));
        }
Exemplo n.º 13
0
        private void AssertAddToRoleInvalidRequest(string msg, AddUserToRoleFormModel model, IActionResult result, string assertMsg)
        {
            msg.Should().Be(assertMsg);
            result.Should().BeOfType <RedirectToActionResult>();
            var redirect = result.As <RedirectToActionResult>();

            redirect.ActionName.Should().Be("UserDetails");
            redirect.ControllerName.Should().Be("Users");
            redirect.RouteValues.Keys.Should().Contain("area");
            redirect.RouteValues["area"].Should().Be(Administration);
            redirect.RouteValues.Keys.Should().Contain("id");
            redirect.RouteValues["id"].Should().Be(model.UserId);
        }
Exemplo n.º 14
0
        public async Task <IActionResult> AddToRole(AddUserToRoleFormModel model)
        {
            if (!ModelState.IsValid)
            {
                return(RedirectToAction(nameof(All)));
            }
            User user = await userManager.FindByIdAsync(model.UserId);

            IdentityResult result = await this.userManager.AddToRoleAsync(user, model.Role);

            this.AddTempDataNotification("User added to role " + model.Role, NotificationType.Success);
            return(RedirectToAction(nameof(All)));
        }
Exemplo n.º 15
0
        public async Task <IActionResult> AddToRole(AddUserToRoleFormModel model)
        {
            var roleExists = await this.roleManager.RoleExistsAsync(model.Role);

            var user = await this.userManager.FindByIdAsync(model.UserId);

            var userExists = user != null;

            if (!roleExists || !userExists)
            {
                this.ModelState.AddModelError(string.Empty, "Invalid identity details.");
            }

            if (!this.ModelState.IsValid)
            {
                this.RedirectToAction(nameof(this.Index));
            }

            if (this.Request.Form.ContainsKey("add"))
            {
                if (await this.userManager.IsInRoleAsync(user, model.Role))
                {
                    this.TempData.AddWarningMessage($"User {user.UserName} is already in {model.Role} role.");

                    return(this.RedirectToAction(nameof(this.Index)));
                }

                await this.userManager.AddToRoleAsync(user, model.Role);

                this.TempData.AddSuccessMessage($"User {user.UserName} successfully added to the {model.Role} role.");
            }

            if (this.Request.Form.ContainsKey("remove"))
            {
                if (!await this.userManager.IsInRoleAsync(user, model.Role))
                {
                    this.TempData.AddWarningMessage($"User {user.UserName} is not in {model.Role} role.");

                    return(this.RedirectToAction(nameof(this.Index)));
                }

                await this.userManager.RemoveFromRoleAsync(user, model.Role);

                this.TempData.AddSuccessMessage($"User {user.UserName} is no longer {model.Role}.");
            }

            return(this.RedirectToAction(nameof(this.Index)));
        }
        public async Task <IActionResult> AddToRole(AddUserToRoleFormModel model)
        {
            var roleExists = await this.roleManager.RoleExistsAsync(model.Role);

            var user = await this.userManager.FindByIdAsync(model.UserId);

            var userExists = user != null;

            if (!roleExists || !userExists)
            {
                this.ModelState.AddModelError(string.Empty, ErrorMsgInvalidIdentity);
            }

            if (!this.ModelState.IsValid)
            {
                this.RedirectToAction(nameof(this.Index));
            }

            if (this.Request.Form.ContainsKey(AddRequestKey))
            {
                if (await this.userManager.IsInRoleAsync(user, model.Role))
                {
                    this.TempData.AddWarningMessage(string.Format(WarrningUserAlreadyInRole, user.UserName, model.Role));

                    return(this.RedirectToAction(nameof(this.Index)));
                }

                await this.userManager.AddToRoleAsync(user, model.Role);

                this.TempData.AddSuccessMessage(string.Format(SuccessUserAddedToRole, user.UserName, model.Role));
            }

            if (this.Request.Form.ContainsKey(RemoveRequestKey))
            {
                if (!await this.userManager.IsInRoleAsync(user, model.Role))
                {
                    this.TempData.AddWarningMessage(string.Format(WarrningUserNotInRole, user.UserName, model.Role));

                    return(this.RedirectToAction(nameof(this.Index)));
                }

                await this.userManager.RemoveFromRoleAsync(user, model.Role);

                this.TempData.AddSuccessMessage(string.Format(SuccessUserRemovedFromRole, user.UserName, model.Role));
            }

            return(this.RedirectToAction(nameof(this.Index)));
        }
Exemplo n.º 17
0
        public async Task <IActionResult> DeleteUser(AddUserToRoleFormModel model)
        {
            var user = await this.userManager.FindByIdAsync(model.UserId);

            var userExists = user != null;

            if (!userExists)
            {
                ModelState.AddModelError(string.Empty, "Invalid identity details.");
            }

            if (!ModelState.IsValid)
            {
                return(RedirectToAction(nameof(Index)));
            }
            await this.userManager.DeleteAsync(user);

            TempData.AddSuccessMessage($"User {user.UserName} was successfully deleted.");
            return(RedirectToAction(nameof(Index)));
        }
Exemplo n.º 18
0
        public async Task <IActionResult> AddToRole(AddUserToRoleFormModel model)
        {
            var roleExists = await this.roleManager.RoleExistsAsync(model.Role);

            var user = await this.userManager.FindByIdAsync(model.UserId);

            var userExists = user != null;

            if (!roleExists || !userExists || !ModelState.IsValid)
            {
                TempData.AddErrorMessage("Invalid identity details.");

                return(RedirectToAction(nameof(UserDetails), "Users", new { area = Administration, id = model.UserId }));
            }

            await this.userManager.AddToRoleAsync(user, model.Role);

            TempData.AddSuccessMessage($"User {user.UserName} successfully added to the {model.Role} role.");

            return(RedirectToAction(nameof(UserDetails), "Users", new { area = Administration, id = model.UserId }));
        }
Exemplo n.º 19
0
        public async Task <IActionResult> RemoveFromRole(AddUserToRoleFormModel model)
        {
            var roleExists = await this._roleManager.RoleExistsAsync(model.Role);

            var user = await this._userManager.FindByIdAsync(model.UserId);

            var userRoles = await this._userManager.GetRolesAsync(user);

            var userExists = user != null;



            if (!roleExists || !userExists)
            {
                ModelState.AddModelError(string.Empty, "Invalid identity details.");
            }

            foreach (var role in userRoles)
            {
                if (role != model.Role)
                {
                    TempData.ErrorMessage("User dosn`t have this role");

                    return(RedirectToAction(nameof(AllCustomers)));
                }
            }

            if (!ModelState.IsValid)
            {
                RedirectToAction(nameof(AllCustomers));
            }

            await this._userManager.RemoveFromRoleAsync(user, model.Role);

            if (user != null)
            {
                TempData.AddSuccessMessage($"Successfully removed user {user.UserName} to {model.Role} role");
            }
            return(RedirectToAction(nameof(AllCustomers)));
        }
Exemplo n.º 20
0
        public async Task <IActionResult> AddToRole(AddUserToRoleFormModel model)
        {
            var user = await userManager.FindByIdAsync(model.UserId);

            var userExist = user != null;
            var roleExist = await roleManager.RoleExistsAsync(model.Role);

            if (!roleExist || !userExist)
            {
                ModelState.AddModelError(string.Empty, "Invalid identity details.");
            }

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

            TempData.AddSuccessMessage($"User {user} added to {model.Role} role.");
            await this.userManager.AddToRoleAsync(user, model.Role);

            return(RedirectToAction("Index"));
        }
Exemplo n.º 21
0
        public async Task AddToRoleWithValidDataShouldReturnViewWithValidModel()
        {
            var    user           = this.users.First();
            var    role           = this.roles.First().Name;
            string successMessage = null;
            var    userManager    = UserManagerMock.New;

            userManager
            .Setup(u => u.FindByIdAsync(It.IsAny <string>()))
            .ReturnsAsync(user);
            userManager
            .Setup(u => u.AddToRoleAsync(user, role))
            .ReturnsAsync(new IdentityResult());
            var roleManager = RoleManagerMock.New;

            roleManager
            .Setup(m => m.RoleExistsAsync(It.IsAny <string>()))
            .ReturnsAsync(true);
            var controller = new UsersController(userManager.Object, roleManager.Object);
            var tempData   = new Mock <ITempDataDictionary>();

            tempData
            .SetupSet(t => t[TempDataSuccessMessageKey] = It.IsAny <string>())
            .Callback((string key, object message) => successMessage = message as string);
            controller.TempData = tempData.Object;

            var model = new AddUserToRoleFormModel
            {
                Role   = role,
                UserId = user.Id
            };

            var result = await controller.AddToRole(model);

            var assertMsg = $"User {user.UserName} successfully added to the {model.Role} role.";

            this.AssertAddToRoleInvalidRequest(successMessage, model, result, assertMsg);
        }
Exemplo n.º 22
0
        public async Task <ActionResult> AddToRole(AddUserToRoleFormModel model)
        {
            var user = this.userService.FindById(model.UserId);
            var role = this.users.GetRoles(model.Role);

            var userExists = user != null;
            var roleExists = role != null;

            if (!roleExists || !userExists)
            {
                ModelState.AddModelError(string.Empty, "Invalid identity details.");
            }

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

            await this.userService.AddToRoleAsync(user.Id, role.Name);

            TempData.AddSuccessMessage($"User {user.UserName} successfully added to the {role.Name} role.");
            return(RedirectToAction(nameof(Index)));
        }
Exemplo n.º 23
0
        public async Task <IActionResult> RemoveFromRole(AddUserToRoleFormModel model)
        {
            var roleExists = await this.roleManager.RoleExistsAsync(model.Role);

            var user = await this.userManager.FindByIdAsync(model.UserId);

            var userExists = user != null;

            if (!roleExists || !userExists)
            {
                ModelState.AddModelError(string.Empty, "Invalid identity details.");
            }

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

            await this.userManager.RemoveFromRoleAsync(user, model.Role);

            TempData.AddSuccessMessage($"User {user.UserName} successfully removed from the {model.Role} role.");
            return(RedirectToAction(nameof(Index)));
        }
Exemplo n.º 24
0
        public async Task <IActionResult> AddToRole(AddUserToRoleFormModel model)
        {
            var roleExists = await this.roleManager.RoleExistsAsync(model.Role);

            var user = await this.userManager.FindByIdAsync(model.UserId);

            var userExists = user != null;

            if (!roleExists || !userExists)
            {
                ModelState.AddModelError(string.Empty, "Invalid identity details.");
            }

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

            await this.userManager.AddToRoleAsync(user, model.Role);

            this.TempData.AddSuccessMessage(string.Format(SuccessfullAddRoleToUser, model.Role, user.UserName));
            return(RedirectToAction(nameof(Index)));
        }
        public async Task <IActionResult> RemoveFromRole(AddUserToRoleFormModel model)
        {
            var user = await this.userManager.FindByIdAsync(model.UserId);

            var roleExists = await this.roleManager.RoleExistsAsync(model.Role);

            var userExists = user != null;

            if (!roleExists || !userExists)
            {
                this.ModelState.AddModelError(string.Empty, InvalidIdentityError);
            }

            if (!this.ModelState.IsValid)
            {
                return(this.RedirectToAction(nameof(this.Index))
                       .WithWarning(string.Empty, CouldNotUpdateRecord));
            }

            var result = await this.userManager.RemoveFromRoleAsync(user, model.Role);

            return(this.RedirectToAction(nameof(this.Index))
                   .WithSuccess(string.Empty, RecordUpdatedSuccessfully));
        }
Exemplo n.º 26
0
        public async Task <IActionResult> AddToRole(AddUserToRoleFormModel model)
        {
            var roleExists = await this.roleManager.RoleExistsAsync(model.Role);

            var user = await this.userManager.FindByIdAsync(model.UserId);

            var userExists = user != null;

            if (!roleExists || !userExists)
            {
                ModelState.AddModelError(string.Empty, "Invalid identity details.");
            }

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

            await this.userManager.AddToRoleAsync(user, model.Role);

            TempData.AddSuccessMessage($"Потребителят {user.UserName} е добавен успешно в ролята {model.Role}");

            return(RedirectToAction(nameof(Index)));
        }