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