예제 #1
0
        public async Task <IActionResult> EditUser(string id, EditUtilizadorViewModel model)
        {
            if (ModelState.IsValid)
            {
                Utilizador user = await userManager.FindByIdAsync(id);

                if (user != null)
                {
                    user.Name  = model.Name;
                    user.Email = model.Email;
                    string         existingRole   = userManager.GetRolesAsync(user).Result.Single();
                    string         existingRoleId = roleManager.Roles.Single(r => r.Name == existingRole).Id;
                    IdentityResult result         = await userManager.UpdateAsync(user);

                    if (result.Succeeded)
                    {
                        if (existingRoleId != model.ApplicationRoleId)
                        {
                            IdentityResult roleResult = await userManager.RemoveFromRoleAsync(user, existingRole);

                            if (roleResult.Succeeded)
                            {
                                ApplicationRole applicationRole = await roleManager.FindByIdAsync(model.ApplicationRoleId);

                                if (applicationRole != null)
                                {
                                    IdentityResult newRoleResult = await userManager.AddToRoleAsync(user, applicationRole.Name);

                                    if (newRoleResult.Succeeded)
                                    {
                                        return(RedirectToAction("Index"));
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(PartialView("_EditUser", model));
        }
예제 #2
0
        public async Task <IActionResult> EditUser(string id)
        {
            EditUtilizadorViewModel model = new EditUtilizadorViewModel();

            model.ApplicationRoles = roleManager.Roles.Select(r => new SelectListItem
            {
                Text  = r.Name,
                Value = r.Id
            }).ToList();

            if (!String.IsNullOrEmpty(id))
            {
                Utilizador user = await userManager.FindByIdAsync(id);

                if (user != null)
                {
                    model.Name              = user.Name;
                    model.Email             = user.Email;
                    model.ApplicationRoleId = roleManager.Roles.Single(r => r.Name == userManager.GetRolesAsync(user).Result.Single()).Id;
                }
            }
            return(PartialView("_EditUser", model));
        }