Use lower-level SetInactiveFlag to disable account

Rely on the Gerrit lower-level interface to disable accounts
so that users can be allowed to self-disable themselves.

Access to self-removal is however protected by a new permission
provided by this plugin. Skipping thus the self-disabling
check in Gerrit is considered safe in this case.

Change-Id: Id0b49348d3e745ba993e2583baad03af7aebc6ed
diff --git a/src/main/java/com/gerritforge/gerrit/plugins/account/GerritAccountRemover.java b/src/main/java/com/gerritforge/gerrit/plugins/account/GerritAccountRemover.java
index bf1553b..d12830b 100644
--- a/src/main/java/com/gerritforge/gerrit/plugins/account/GerritAccountRemover.java
+++ b/src/main/java/com/gerritforge/gerrit/plugins/account/GerritAccountRemover.java
@@ -24,9 +24,11 @@
 import com.google.gerrit.extensions.common.EmailInfo;
 import com.google.gerrit.extensions.common.SshKeyInfo;
 import com.google.gerrit.extensions.restapi.RestApiException;
+import com.google.gerrit.reviewdb.client.Account;
 import com.google.gerrit.server.CurrentUser;
 import com.google.gerrit.server.account.AccountResource;
 import com.google.gerrit.server.account.PutName;
+import com.google.gerrit.server.account.SetInactiveFlag;
 import com.google.gerrit.server.account.externalids.ExternalId;
 import com.google.gerrit.server.permissions.PermissionBackend;
 import com.google.inject.Inject;
@@ -34,16 +36,14 @@
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class GerritAccountRemover implements AccountRemover {
-  private static final Logger log = LoggerFactory.getLogger(GerritAccountRemover.class);
   private final Accounts accounts;
   private final PutName putName;
   private final AccountResourceFactory accountFactory;
   private final PermissionBackend permissionBackend;
   private final Provider<CurrentUser> userProvider;
+  private final SetInactiveFlag setInactive;
   private final String pluginName;
 
   @Inject
@@ -53,12 +53,14 @@
       AccountResourceFactory accountFactory,
       PermissionBackend permissionBackend,
       Provider<CurrentUser> userProvider,
+      SetInactiveFlag setInactive,
       @PluginName String pluginName) {
     this.accounts = api.accounts();
     this.putName = putName;
     this.accountFactory = accountFactory;
     this.permissionBackend = permissionBackend;
     this.userProvider = userProvider;
+    this.setInactive = setInactive;
     this.pluginName = pluginName;
   }
 
@@ -84,7 +86,7 @@
     removeExternalIds(account);
     removeFullName(getAccountResource(accountId));
     if (account.getActive()) {
-      account.setActive(false);
+      setInactive.deactivate(new Account.Id(accountId));
     }
   }