public async Task <IActionResult> EditByAdminAsync(UserEditAdminDto parameters) { _ = parameters ?? throw new ArgumentNullException(nameof(parameters)); User user = await _userManager.FindByNameAsync(parameters.UserName); if (user is null) { return(BadRequest("Utilisateur invalide.")); } if (parameters.PlayerId is not null && await _playerService.GetAsync(parameters.PlayerId) is null) { return(BadRequest("L'id de joueur est invalide.")); } IdentityResult result; user.PlayerId = parameters.PlayerId; result = await _userManager.UpdateAsync(user); if (!result.Succeeded) { return(BadRequest(result.Errors.FirstOrDefault()?.Description)); } result = await _userManager.RemoveFromRolesAsync(user, await _userManager.GetRolesAsync(user)); if (!result.Succeeded) { return(BadRequest(result.Errors.FirstOrDefault()?.Description)); } result = await _userManager.AddToRolesAsync(user, parameters.Roles); return(result.Succeeded ? Ok() : BadRequest(result.Errors.FirstOrDefault()?.Description)); }
public async Task <IActionResult> EditUser([FromBody] UserEditAdminDto model) { if (!ModelState.IsValid) { return(BadRequest(new RequestMessageResponse() { Success = false, Message = "Bad Request" })); } // Check if valid user var currentUser = await _identityService.GetCurrentPersonIdentityAsync(); if (currentUser == null) { return(BadRequest(new RequestMessageResponse() { Success = false, Message = "Forbidden" })); } // Get user from Db var user = await _userService.GetUserById(model.Id); if (user == null) { return(BadRequest(new RequestMessageResponse() { Success = false, Message = "Bad Request" })); } // Set new data user.EmailConfirmed = model.EmailConfirmed; user.PhoneNumber = model.PhoneNumber; user.Firstname = model.Firstname; user.Lastname = model.Lastname; user.SetGender(model.Gender); user.LockoutEnabled = model.LockoutEnabled; // Edit role if (user.UserRoles[0].RoleId != model.Role) { var oldRole = user.UserRoles[0].RoleId; await _userService.ChangeUserRole(user, oldRole, model.Role); } // Save data await _userManager.UpdateAsync(user); // If edit email if (model.EditEmail) { var token = await _userManager.GenerateChangeEmailTokenAsync(user, model.Email); var result = await _userManager.ChangeEmailAsync(user, model.Email, token); if (result.Succeeded) { await _userManager.SetUserNameAsync(user, model.Email); } } // Return result return(new OkObjectResult(new RequestMessageResponse() { Success = true, Message = "Success" })); }