Exemple #1
0
        public async Task <IActionResult> ManageUserRoles(string userId)
        {
            ViewBag.userID = userId;
            var user = await _userManager.FindByIdAsync(userId);

            if (user == null)
            {
                ViewBag.ErrorMessage = $"User with Id = {userId} cannot be found";
                return(View("NotFound"));
            }

            var model = new List <RolesInUserModel>();

            foreach (var role in _roleManager.Roles)
            {
                var rolesInUserView = new RolesInUserModel
                {
                    RoleId   = role.Id,
                    RoleName = role.Name
                };
                if (await _userManager.IsInRoleAsync(user, role.Name))
                {
                    rolesInUserView.IsSelected = true;
                }
                else
                {
                    rolesInUserView.IsSelected = false;
                }
                model.Add(rolesInUserView);
            }

            return(View(model));
        }
Exemple #2
0
        public async Task <IHttpActionResult> ManageRolesInUser([FromBody] RolesInUserModel model)
        {
            DbResult _dbResult = new DbResult();

            var user = await this.UserManager.FindByNameAsync(model.Username);

            if (user == null)
            {
                _dbResult = new DbResult
                {
                    IsDbSuccess = false,
                    DbMessage   = "User does not exist"
                };
            }
            else
            {
                IdentityResult result = new IdentityResult();
                foreach (var role in model.AddRoles)
                {
                    if (!this.UserManager.IsInRole(user.Id, role))
                    {
                        result = await this.UserManager.AddToRolesAsync(user.Id, role);
                    }
                }

                if (result.Succeeded)
                {
                    result = await this.UserManager.RemoveFromRolesAsync(user.Id, model.RemoveRoles);
                }

                if (result.Succeeded)
                {
                    _dbResult = new DbResult
                    {
                        IsDbSuccess = true,
                        DbMessage   = "Roles assigned to user successfully"
                    };
                }
                else
                {
                    _dbResult = new DbResult
                    {
                        IsDbSuccess = false,
                        DbMessage   = result.Errors.SingleOrDefault()
                    };
                }
            }
            return(Ok(_dbResult));
        }
        public async Task <IActionResult> ManageRolesInUser(string id, RolesInUserModel rolesInUser)
        {
            var user = await _userManager.FindByIdAsync(id);

            if (user == null)
            {
                return(NotFound());
            }
            foreach (var roleId in rolesInUser.EnrolledRoles)
            {
                var role = await _roleManager.FindByIdAsync(roleId);

                if (role == null)
                {
                    continue;
                }
                bool isInRole = await _userManager.IsInRoleAsync(user, role.Name);

                if (!isInRole)
                {
                    await _userManager.AddToRoleAsync(user, role.Name);
                }
            }
            foreach (var roleId in rolesInUser.RemovedRoles)
            {
                var role = await _roleManager.FindByIdAsync(roleId);

                if (role == null)
                {
                    continue;
                }
                bool isInRole = await _userManager.IsInRoleAsync(user, role.Name);

                if (isInRole)
                {
                    await _userManager.RemoveFromRoleAsync(user, role.Name);
                }
            }
            return(Ok());
        }
        public async Task <IHttpActionResult> AssignRolesToUser(RolesInUserModel model)
        {
            var appUser = await this.AppUserManager.FindByIdAsync(model.Id);

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

            var currentRoles = await this.AppUserManager.GetRolesAsync(appUser.Id);

            var rolesNotExists = model.RolesToAssign.Except(this.AppRoleManager.Roles.Select(x => x.Name)).ToArray();

            if (rolesNotExists.Count() > 0)
            {
                ModelState.AddModelError("", string.Format("Roles '{0}' does not exixts in the system", string.Join(",", rolesNotExists)));
                return(BadRequest(ModelState));
            }

            IdentityResult removeResult = await this.AppUserManager.RemoveFromRolesAsync(appUser.Id, currentRoles.ToArray());

            if (!removeResult.Succeeded)
            {
                ModelState.AddModelError("", "Failed to remove user roles");
                return(BadRequest(ModelState));
            }

            IdentityResult addResult = await this.AppUserManager.AddToRolesAsync(appUser.Id, model.RolesToAssign.ToArray());

            if (!addResult.Succeeded)
            {
                ModelState.AddModelError("", "Failed to add user roles");
                return(BadRequest(ModelState));
            }

            return(Ok("'" + model.Id + "'"));
        }