diff --git a/src/Api/AdminConsole/Controllers/OrganizationUsersController.cs b/src/Api/AdminConsole/Controllers/OrganizationUsersController.cs index 15ac49973b..583101c0f7 100644 --- a/src/Api/AdminConsole/Controllers/OrganizationUsersController.cs +++ b/src/Api/AdminConsole/Controllers/OrganizationUsersController.cs @@ -588,10 +588,10 @@ public class OrganizationUsersController : Controller return NotFound(); } - var currentUser = await _userService.GetUserByPrincipalAsync(User); + var currentUser = _userService.GetProperUserId(User); ; if (currentUser == null) { - return Unauthorized(); + return NotFound(); } var result = await _deleteClaimedOrganizationUserAccountCommand.DeleteUserAsync(orgId, id, currentUser.Id); diff --git a/src/Core/AdminConsole/OrganizationFeatures/OrganizationUsers/DeleteClaimedOrganizationUserAccountCommand.cs b/src/Core/AdminConsole/OrganizationFeatures/OrganizationUsers/DeleteClaimedOrganizationUserAccountCommand.cs index 4a47b2ebbf..03ca36290b 100644 --- a/src/Core/AdminConsole/OrganizationFeatures/OrganizationUsers/DeleteClaimedOrganizationUserAccountCommand.cs +++ b/src/Core/AdminConsole/OrganizationFeatures/OrganizationUsers/DeleteClaimedOrganizationUserAccountCommand.cs @@ -59,26 +59,28 @@ public class DeleteClaimedOrganizationUserAccountCommand : IDeleteClaimedOrganiz public async Task> DeleteUserAsync(Guid organizationId, Guid organizationUserId, Guid deletingUserId) { - var result = await InternalDeleteManyUsersAsync(organizationId, [organizationUserId], deletingUserId); + var result = await DeleteManyUsersAsync(organizationId, [organizationUserId], deletingUserId); - var error = result.InvalidResults.FirstOrDefault()?.Errors.FirstOrDefault(); - - if (error != null) + if (result.Successes.Any()) { - return error.ToFailure(); + return new Success(result.Successes.First()); } - var valid = result.ValidResults.First(); - - return new Success(new DeleteUserResponse - { - OrganizationUserId = valid!.Value.OrganizationUserId - }); + return new Failure(result.Failures.First()); } public async Task> DeleteManyUsersAsync(Guid organizationId, IEnumerable orgUserIds, Guid deletingUserId) { - var result = await InternalDeleteManyUsersAsync(organizationId, orgUserIds, deletingUserId); + var orgUsers = await _organizationUserRepository.GetManyAsync(orgUserIds); + var users = await GetUsersAsync(orgUsers); + var claimedStatuses = await _getOrganizationUsersClaimedStatusQuery.GetUsersOrganizationClaimedStatusAsync(organizationId, orgUserIds); + + var requests = CreateRequests(organizationId, deletingUserId, orgUserIds, orgUsers, users, claimedStatuses); + var result = await _deleteClaimedOrganizationUserAccountValidator.ValidateAsync(requests); + + await CancelPremiumsAsync(result.ValidResults); + await HandleUserDeletionsAsync(result.ValidResults); + await LogDeletedOrganizationUsersAsync(result.ValidResults); var successes = result.ValidResults.Select(valid => new DeleteUserResponse { OrganizationUserId = valid.Value.OrganizationUser!.Id }); var errors = result.InvalidResults @@ -88,22 +90,6 @@ public class DeleteClaimedOrganizationUserAccountCommand : IDeleteClaimedOrganiz return new Partial(successes, errors); } - private async Task> InternalDeleteManyUsersAsync(Guid organizationId, IEnumerable orgUserIds, Guid deletingUserId) - { - var orgUsers = await _organizationUserRepository.GetManyAsync(orgUserIds); - var users = await GetUsersAsync(orgUsers); - var claimedStatuses = await _getOrganizationUsersClaimedStatusQuery.GetUsersOrganizationClaimedStatusAsync(organizationId, orgUserIds); - - var requests = CreateRequests(organizationId, deletingUserId, orgUserIds, orgUsers, users, claimedStatuses); - var results = await _deleteClaimedOrganizationUserAccountValidator.ValidateAsync(requests); - - await CancelPremiumsAsync(results.ValidResults); - await HandleUserDeletionsAsync(results.ValidResults); - await LogDeletedOrganizationUsersAsync(results.ValidResults); - - return results; - } - private List CreateRequests( Guid organizationId, Guid deletingUserId, diff --git a/src/Core/AdminConsole/OrganizationFeatures/OrganizationUsers/DeleteUserValidationRequest.cs b/src/Core/AdminConsole/OrganizationFeatures/OrganizationUsers/DeleteUserValidationRequest.cs index cb1d701fd7..9a4ccd59b9 100644 --- a/src/Core/AdminConsole/OrganizationFeatures/OrganizationUsers/DeleteUserValidationRequest.cs +++ b/src/Core/AdminConsole/OrganizationFeatures/OrganizationUsers/DeleteUserValidationRequest.cs @@ -10,5 +10,5 @@ public class DeleteUserValidationRequest public OrganizationUser? OrganizationUser { get; init; } public User? User { get; init; } public Guid DeletingUserId { get; init; } - public bool? IsClaimed { get; init; } + public bool IsClaimed { get; init; } }