Esempio n. 1
0
        public async Task <IdentityResult> UpdateUserRoles <TRoleViewModel>(IEditRoleViewModel <TRoleViewModel> model)

            where TRoleViewModel : IIdentityRoleViewModel
        {
            try
            {
                var selectedRoles   = model.Roles.Where(ir => ir.IsSelected);
                var unSelectedRoles = model.Roles.Where(ir => !ir.IsSelected);

                var user = await GetAsync(model.UserId);

                var userRoles = user.Roles;

                var rolesToAdd    = selectedRoles.Where(r => !userRoles.Select(i => i.RoleId).Contains(r.Id));
                var rolesToRemove = unSelectedRoles.Where(r => userRoles.Select(ur => ur.RoleId).Contains(r.Id));

                if (rolesToAdd.Any())
                {
                    await _userManagerFacade.AddToRolesAsync(model.UserId, rolesToAdd.Select(ir => ir.Name).ToArray());
                }

                if (rolesToRemove.Any())
                {
                    await _userManagerFacade.RemoveFromRolesAsync(model.UserId, rolesToRemove.Select(ir => ir.Name).ToArray());
                }

                return(IdentityResult.Success);
            }
            catch (Exception ex)
            {
                return(new IdentityResult(ex.Message));
            }
        }
Esempio n. 2
0
 public Task <IdentityResult> RemoveFromRolesAsync(string userId, params string[] roles)
 {
     return(_userManagerFacade.RemoveFromRolesAsync(userId, roles));
 }