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() {