Skip to content

Commit 4c11862

Browse files
author
Scott Bommarito
authored
Only commit once in DeleteAccountService.DeleteAccountAsync (#7034)
1 parent 5efe0d9 commit 4c11862

19 files changed

Lines changed: 153 additions & 163 deletions

src/NuGetGallery/Areas/Admin/Controllers/ReservedNamespaceController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public async Task<JsonResult> RemoveOwner(ReservedNamespace prefix, string owner
101101
{
102102
try
103103
{
104-
await _reservedNamespaceService.DeleteOwnerFromReservedNamespaceAsync(prefix.Value, owner, commitAsTransaction:true);
104+
await _reservedNamespaceService.DeleteOwnerFromReservedNamespaceAsync(prefix.Value, owner, commitChanges: true);
105105
return Json(new { success = true, message = string.Format(Strings.ReservedNamespace_OwnerRemoved, owner, prefix.Value) });
106106
}
107107
catch (Exception ex) when (ex is InvalidOperationException || ex is ArgumentException)

src/NuGetGallery/Authentication/AuthenticationService.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -599,12 +599,16 @@ public virtual CredentialViewModel DescribeCredential(Credential credential)
599599
return credentialViewModel;
600600
}
601601

602-
public virtual async Task RemoveCredential(User user, Credential cred)
602+
public virtual async Task RemoveCredential(User user, Credential cred, bool commitChanges = true)
603603
{
604604
await Auditing.SaveAuditRecordAsync(new UserAuditRecord(user, AuditedUserAction.RemoveCredential, cred));
605605
user.Credentials.Remove(cred);
606606
Entities.Credentials.Remove(cred);
607-
await Entities.SaveChangesAsync();
607+
608+
if (commitChanges)
609+
{
610+
await Entities.SaveChangesAsync();
611+
}
608612
}
609613

610614
public virtual async Task EditCredentialScopes(User user, Credential cred, ICollection<Scope> newScopes)

src/NuGetGallery/Controllers/JsonApiController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ public async Task<JsonResult> RemovePackageOwner(string id, string username)
203203
return Json(new { success = false, message = "You can't remove the only owner from a package." }, JsonRequestBehavior.AllowGet);
204204
}
205205

206-
await _packageOwnershipManagementService.RemovePackageOwnerAsync(model.Package, model.CurrentUser, model.User, commitAsTransaction: true);
206+
await _packageOwnershipManagementService.RemovePackageOwnerAsync(model.Package, model.CurrentUser, model.User, commitChanges: true);
207207

208208
var emailMessage = new PackageOwnerRemovedMessage(_appConfiguration, model.CurrentUser, model.User, model.Package);
209209
await _messageService.SendMessageAsync(emailMessage);

src/NuGetGallery/Controllers/OrganizationsController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ public override async Task<ActionResult> RequestAccountDeletion(string accountNa
367367
return RedirectToAction(nameof(DeleteRequest));
368368
}
369369

370-
var result = await DeleteAccountService.DeleteAccountAsync(account, currentUser, commitAsTransaction: true);
370+
var result = await DeleteAccountService.DeleteAccountAsync(account, currentUser);
371371

372372
if (result.Success)
373373
{

src/NuGetGallery/Controllers/UsersController.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -333,8 +333,7 @@ public override async Task<ActionResult> RequestAccountDeletion(string accountNa
333333
// Unconfirmed users can be deleted immediately without creating a support request.
334334
DeleteUserAccountStatus accountDeleteStatus = await _deleteAccountService.DeleteAccountAsync(userToBeDeleted: user,
335335
userToExecuteTheDelete: user,
336-
orphanPackagePolicy: AccountDeletionOrphanPackagePolicy.UnlistOrphans,
337-
commitAsTransaction: true);
336+
orphanPackagePolicy: AccountDeletionOrphanPackagePolicy.UnlistOrphans);
338337
if (!accountDeleteStatus.Success)
339338
{
340339
TempData["RequestFailedMessage"] = Strings.AccountSelfDelete_Fail;
@@ -393,8 +392,7 @@ public virtual async Task<ActionResult> Delete(DeleteAccountAsAdminViewModel mod
393392
var status = await _deleteAccountService.DeleteAccountAsync(
394393
userToBeDeleted: user,
395394
userToExecuteTheDelete: admin,
396-
orphanPackagePolicy: model.ShouldUnlist ? AccountDeletionOrphanPackagePolicy.UnlistOrphans : AccountDeletionOrphanPackagePolicy.KeepOrphans,
397-
commitAsTransaction: true);
395+
orphanPackagePolicy: model.ShouldUnlist ? AccountDeletionOrphanPackagePolicy.UnlistOrphans : AccountDeletionOrphanPackagePolicy.KeepOrphans);
398396
return View("DeleteUserAccountStatus", status);
399397
}
400398
}

src/NuGetGallery/Security/ISecurityPolicyService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,12 @@ public interface ISecurityPolicyService
4141
/// <summary>
4242
/// Unsubscribe a user from one or more security policies.
4343
/// </summary>
44-
Task UnsubscribeAsync(User user, string subscriptionName);
44+
Task UnsubscribeAsync(User user, string subscriptionName, bool commitChanges = true);
4545

4646
/// <summary>
4747
/// Unsubscribe a user from one or more security policies.
4848
/// </summary>
49-
Task UnsubscribeAsync(User user, IUserSecurityPolicySubscription subscription);
49+
Task UnsubscribeAsync(User user, IUserSecurityPolicySubscription subscription, bool commitChanges = true);
5050

5151
/// <summary>
5252
/// Evaluate any security policies that may apply to the current context.

src/NuGetGallery/Security/SecurityPolicyService.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,7 @@ await Auditing.SaveAuditRecordAsync(
426426
/// <summary>
427427
/// Unsubscribe a user from one or more security policies.
428428
/// </summary>
429-
public Task UnsubscribeAsync(User user, string subscriptionName)
429+
public Task UnsubscribeAsync(User user, string subscriptionName, bool commitChanges = true)
430430
{
431431
if (string.IsNullOrEmpty(subscriptionName))
432432
{
@@ -439,13 +439,13 @@ public Task UnsubscribeAsync(User user, string subscriptionName)
439439
throw new NotSupportedException($"Subscription '{subscriptionName}' not found.");
440440
}
441441

442-
return UnsubscribeAsync(user, subscription);
442+
return UnsubscribeAsync(user, subscription, commitChanges);
443443
}
444444

445445
/// <summary>
446446
/// Unsubscribe a user from one or more security policies.
447447
/// </summary>
448-
public async Task UnsubscribeAsync(User user, IUserSecurityPolicySubscription subscription)
448+
public async Task UnsubscribeAsync(User user, IUserSecurityPolicySubscription subscription, bool commitChanges = true)
449449
{
450450
if (user == null)
451451
{
@@ -471,7 +471,10 @@ public async Task UnsubscribeAsync(User user, IUserSecurityPolicySubscription su
471471
await Auditing.SaveAuditRecordAsync(
472472
new UserAuditRecord(user, AuditedUserAction.UnsubscribeFromPolicies, subscription.Policies));
473473

474-
await EntitiesContext.SaveChangesAsync();
474+
if (commitChanges)
475+
{
476+
await EntitiesContext.SaveChangesAsync();
477+
}
475478

476479
Diagnostics.Information($"User is now unsubscribed from '{subscription.SubscriptionName}'.");
477480
}

0 commit comments

Comments
 (0)