Remove redundant account info structure

The account information is already available from the GET /accounts/self
API. No need to provide the functionality again through the delete
command.

Change-Id: Ice1c0922342a74e0065f06a50bc4df6746417859
diff --git a/src/main/java/com/gerritforge/gerrit/plugins/account/AccountPersonalInformation.java b/src/main/java/com/gerritforge/gerrit/plugins/account/AccountPersonalInformation.java
deleted file mode 100644
index a81f4c6..0000000
--- a/src/main/java/com/gerritforge/gerrit/plugins/account/AccountPersonalInformation.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (C) 2018 GerritForge Ltd
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.gerritforge.gerrit.plugins.account;
-
-import com.google.gerrit.server.IdentifiedUser;
-import java.util.Set;
-
-public class AccountPersonalInformation {
-  public final String fullname;
-  public final String username;
-  public final Set<String> emails;
-
-  public AccountPersonalInformation(IdentifiedUser user) {
-    this.fullname = user.getName();
-    this.username = user.getUserName();
-    this.emails = user.getEmailAddresses();
-  }
-}
diff --git a/src/main/java/com/gerritforge/gerrit/plugins/account/DeleteAccount.java b/src/main/java/com/gerritforge/gerrit/plugins/account/DeleteAccount.java
index 0f490c0..8e3151a 100644
--- a/src/main/java/com/gerritforge/gerrit/plugins/account/DeleteAccount.java
+++ b/src/main/java/com/gerritforge/gerrit/plugins/account/DeleteAccount.java
@@ -60,7 +60,6 @@
     boolean removed = false;
 
     IdentifiedUser user = resource.getUser();
-    AccountPersonalInformation accountInfo = new AccountPersonalInformation(user);
     int accountId = user.getAccountId().get();
     assertDeletePermission(accountId);
 
@@ -69,7 +68,7 @@
       removed = true;
     }
 
-    return new DeleteAccountResponse(removed, accountInfo);
+    return new DeleteAccountResponse(removed);
   }
 
   private void assertDeletePermission(int accountId) throws AuthException {
diff --git a/src/main/java/com/gerritforge/gerrit/plugins/account/DeleteAccountCommand.java b/src/main/java/com/gerritforge/gerrit/plugins/account/DeleteAccountCommand.java
index 186586a..ea2c048 100644
--- a/src/main/java/com/gerritforge/gerrit/plugins/account/DeleteAccountCommand.java
+++ b/src/main/java/com/gerritforge/gerrit/plugins/account/DeleteAccountCommand.java
@@ -18,7 +18,6 @@
 import com.google.gerrit.server.account.AccountResource;
 import com.google.gerrit.sshd.CommandMetaData;
 import com.google.gerrit.sshd.SshCommand;
-import com.google.gson.Gson;
 import com.google.inject.Inject;
 import java.io.PrintWriter;
 import org.kohsuke.args4j.Argument;
@@ -34,10 +33,9 @@
   private int accountId;
 
   @Option(
-    name = "--yes-really-delete",
-    metaVar = "ACCOUNT-NAME",
-    usage = "confirmation to delete the account"
-  )
+      name = "--yes-really-delete",
+      metaVar = "ACCOUNT-NAME",
+      usage = "confirmation to delete the account")
   private String accountName;
 
   private final AccountResourceFactory accountFactory;
@@ -62,7 +60,6 @@
       @SuppressWarnings("resource")
       PrintWriter out = resp.deleted ? stdout : stderr;
       out.println("Account " + (resp.deleted ? "" : "NOT") + " deleted");
-      out.println(new Gson().toJson(resp.accountInfo));
     } catch (Exception e) {
       stderr.printf("FAILED (%s): %s\n", e.getClass().getName(), e.getMessage());
       stderr.flush();
diff --git a/src/main/java/com/gerritforge/gerrit/plugins/account/DeleteAccountResponse.java b/src/main/java/com/gerritforge/gerrit/plugins/account/DeleteAccountResponse.java
index 97fb1dd..7297d50 100644
--- a/src/main/java/com/gerritforge/gerrit/plugins/account/DeleteAccountResponse.java
+++ b/src/main/java/com/gerritforge/gerrit/plugins/account/DeleteAccountResponse.java
@@ -16,10 +16,8 @@
 
 public class DeleteAccountResponse {
   public final boolean deleted;
-  public final AccountPersonalInformation accountInfo;
 
-  public DeleteAccountResponse(boolean deleted, AccountPersonalInformation accountInfo) {
+  public DeleteAccountResponse(boolean deleted) {
     this.deleted = deleted;
-    this.accountInfo = accountInfo;
   }
 }
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 d12830b..6e9ccd3 100644
--- a/src/main/java/com/gerritforge/gerrit/plugins/account/GerritAccountRemover.java
+++ b/src/main/java/com/gerritforge/gerrit/plugins/account/GerritAccountRemover.java
@@ -22,15 +22,16 @@
 import com.google.gerrit.extensions.api.accounts.AccountApi;
 import com.google.gerrit.extensions.api.accounts.Accounts;
 import com.google.gerrit.extensions.common.EmailInfo;
+import com.google.gerrit.extensions.common.NameInput;
 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.gerrit.server.restapi.account.PutName;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
 import java.util.List;
@@ -92,7 +93,7 @@
 
   @Override
   public boolean canDelete(int accountId) {
-    PermissionBackend.WithUser userPermission = permissionBackend.user(userProvider);
+    PermissionBackend.WithUser userPermission = permissionBackend.user(userProvider.get());
     return userPermission.testOrFalse(
             new PluginPermission(pluginName, DeleteAccountCapability.DELETE_ACCOUNT))
         || (userPermission.testOrFalse(
@@ -101,7 +102,7 @@
   }
 
   private void removeFullName(AccountResource userRsc) throws Exception {
-    putName.apply(userRsc, new PutName.Input());
+    putName.apply(userRsc, new NameInput());
   }
 
   private void removeExternalIds(AccountApi account) throws RestApiException {
diff --git a/src/main/java/com/gerritforge/gerrit/plugins/account/XAuthFilter.java b/src/main/java/com/gerritforge/gerrit/plugins/account/XAuthFilter.java
index bfab314..92953ea 100644
--- a/src/main/java/com/gerritforge/gerrit/plugins/account/XAuthFilter.java
+++ b/src/main/java/com/gerritforge/gerrit/plugins/account/XAuthFilter.java
@@ -32,7 +32,8 @@
 
 @Singleton
 public class XAuthFilter extends AllRequestFilter {
-  public static final String ALLOWED_URI_SUFFIX = "/a/accounts/self";
+  public static final String ALLOWED_GET_URI_SUFFIX = "/a/accounts/self";
+  public static final String ALLOWED_DELETE_URI_SUFFIX = "/a/accounts/self/account~";
 
   private static final Logger log = LoggerFactory.getLogger(XAuthFilter.class);
 
@@ -46,14 +47,22 @@
   @Override
   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
       throws IOException, ServletException {
-    String uri = ((HttpServletRequest) request).getRequestURI();
+    HttpServletRequest httpRequest = (HttpServletRequest) request;
+    String uri = httpRequest.getRequestURI();
+    String method = httpRequest.getMethod();
 
-    if (uri.endsWith(ALLOWED_URI_SUFFIX)) {
+    if ((method.equals("GET") && uri.endsWith(ALLOWED_GET_URI_SUFFIX))
+        || method.equals("DELETE") && uri.endsWith(ALLOWED_DELETE_URI_SUFFIX)) {
       WebSession session = webSession.get();
       if (session != null && session.isSignedIn() && session.getXGerritAuth() != null) {
-        String currentUser = session.getUser().getUserName();
-        log.info("REST API URI {} allowed for user {}", uri, currentUser);
-        session.setAccessPathOk(AccessPath.REST_API, true);
+        session
+            .getUser()
+            .getUserName()
+            .ifPresent(
+                currentUser -> {
+                  log.info("REST API URI {} allowed for user {}", uri, currentUser);
+                  session.setAccessPathOk(AccessPath.REST_API, true);
+                });
       } else {
         HttpServletResponse httpResponse = (HttpServletResponse) response;
         httpResponse.sendError(HttpServletResponse.SC_FORBIDDEN);
diff --git a/src/main/resources/static/js/account.js b/src/main/resources/static/js/account.js
index 91b0652..0f09f02 100644
--- a/src/main/resources/static/js/account.js
+++ b/src/main/resources/static/js/account.js
@@ -29,10 +29,14 @@
   
   $scope.deleted = "";
   
-  $http.delete('/a/accounts/self', {
+  $http.get('/a/accounts/self', {
     headers: {'X-Requested-With' : 'XMLHttpRequest'}
   }).then(function(response) {
-    $scope.account = response.data.account_info;
+    $scope.account = {
+        "fullname": response.data.name,
+        "username" : response.data.username,
+        "emails" : [ response.data.email ]
+    }
   });
   
   $scope.backToGerrit = function() {