public async Task <IActionResult> Edit(string id) { var user = await this.cookingHubUserManager.FindByIdAsync(id); var isAdmin = await this.cookingHubUserManager.IsInRoleAsync(user, GlobalConstants.AdministratorRoleName); var isUser = await this.cookingHubUserManager.IsInRoleAsync(user, GlobalConstants.UserRoleName); var currUserRole = user.Roles.FirstOrDefault(x => x.UserId == id); var currUserRoleName = await this.roleManager.FindByIdAsync(currUserRole.RoleId); var cookingHubUserEditViewModel = new CookingHubUserEditViewModel { RoleId = currUserRole.RoleId, RoleName = currUserRoleName.Name, }; cookingHubUserEditViewModel.RolesList = this.roleManager.Roles .Select(x => new SelectListItem { Text = x.Name, }) .ToList(); if (currUserRoleName.Name == GlobalConstants.AdministratorRoleName && isAdmin == true) { cookingHubUserEditViewModel.RolesList .Find(x => x.Text == GlobalConstants.AdministratorRoleName).Selected = true; } if (currUserRoleName.Name == GlobalConstants.UserRoleName && isUser == true) { cookingHubUserEditViewModel.RolesList .Find(x => x.Text == GlobalConstants.UserRoleName).Selected = true; } return(this.View(cookingHubUserEditViewModel)); }
public async Task <IActionResult> Edit(CookingHubUserEditViewModel model, string id) { if (!this.ModelState.IsValid) { model.RolesList = this.roleManager.Roles .Select(x => new SelectListItem { Text = x.Name, }) .ToList(); return(this.View(model)); } if (model.NewRole == model.RoleName) { model.RolesList = this.roleManager.Roles .Select(x => new SelectListItem { Text = x.Name, }) .ToList(); return(this.View(model)); } var user = await this.cookingHubUserManager.FindByIdAsync(id); await this.cookingHubUserManager.RemoveFromRoleAsync(user, model.RoleName); await this.cookingHubUserManager.AddToRoleAsync( user, model.NewRole); return(this.RedirectToAction("GetAll", "CookingHubUsers", new { area = "Administration" })); }