mirror of
https://github.com/bitwarden/server.git
synced 2025-03-02 04:11:04 +01:00
revert changes to DeleteAsync
This commit is contained in:
parent
18926765d3
commit
d35390e940
@ -223,25 +223,65 @@ public class UserService : UserManager<User>, IUserService, IDisposable
|
|||||||
|
|
||||||
public override async Task<IdentityResult> DeleteAsync(User user)
|
public override async Task<IdentityResult> DeleteAsync(User user)
|
||||||
{
|
{
|
||||||
var userList = await ValidateDeleteUsersAsync(new List<User> { user });
|
// Check if user is the only owner of any organizations.
|
||||||
var results = userList.ToList()[0].ErrorMessage;
|
var onlyOwnerCount = await _organizationUserRepository.GetCountByOnlyOwnerAsync(user.Id);
|
||||||
|
if (onlyOwnerCount > 0)
|
||||||
if (results == string.Empty || results == null)
|
|
||||||
{
|
{
|
||||||
|
var deletedOrg = false;
|
||||||
|
var orgs = await _organizationUserRepository.GetManyDetailsByUserAsync(user.Id,
|
||||||
|
OrganizationUserStatusType.Confirmed);
|
||||||
|
if (orgs.Count == 1)
|
||||||
|
{
|
||||||
|
var org = await _organizationRepository.GetByIdAsync(orgs.First().OrganizationId);
|
||||||
|
if (org != null && (!org.Enabled || string.IsNullOrWhiteSpace(org.GatewaySubscriptionId)))
|
||||||
|
{
|
||||||
|
var orgCount = await _organizationUserRepository.GetCountByOrganizationIdAsync(org.Id);
|
||||||
|
if (orgCount <= 1)
|
||||||
|
{
|
||||||
|
await _organizationRepository.DeleteAsync(org);
|
||||||
|
deletedOrg = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!deletedOrg)
|
||||||
|
{
|
||||||
|
return IdentityResult.Failed(new IdentityError
|
||||||
|
{
|
||||||
|
Description = "Cannot delete this user because it is the sole owner of at least one organization. Please delete these organizations or upgrade another user.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var onlyOwnerProviderCount = await _providerUserRepository.GetCountByOnlyOwnerAsync(user.Id);
|
||||||
|
if (onlyOwnerProviderCount > 0)
|
||||||
|
{
|
||||||
|
return IdentityResult.Failed(new IdentityError
|
||||||
|
{
|
||||||
|
Description = "Cannot delete this user because it is the sole owner of at least one provider. Please delete these providers or upgrade another user.",
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrWhiteSpace(user.GatewaySubscriptionId))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await CancelPremiumAsync(user);
|
||||||
|
}
|
||||||
|
catch (GatewayException) { }
|
||||||
|
}
|
||||||
|
|
||||||
await _userRepository.DeleteAsync(user);
|
await _userRepository.DeleteAsync(user);
|
||||||
await _referenceEventService.RaiseEventAsync(
|
await _referenceEventService.RaiseEventAsync(
|
||||||
new ReferenceEvent(ReferenceEventType.DeleteAccount, user, _currentContext));
|
new ReferenceEvent(ReferenceEventType.DeleteAccount, user, _currentContext));
|
||||||
await _pushService.PushLogOutAsync(user.Id);
|
await _pushService.PushLogOutAsync(user.Id);
|
||||||
return IdentityResult.Success;
|
return IdentityResult.Success;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
return IdentityResult.Failed(new IdentityError
|
|
||||||
{
|
|
||||||
Description = results
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#nullable enable
|
#nullable enable
|
||||||
public async Task<IEnumerable<(Guid UserId, string? ErrorMessage)>> DeleteManyAsync(IEnumerable<User> users)
|
public async Task<IEnumerable<(Guid UserId, string? ErrorMessage)>> DeleteManyAsync(IEnumerable<User> users)
|
||||||
|
Loading…
Reference in New Issue
Block a user