Add REST endpoint to get account external IDs
Add a new endpoint /accounts/{id}/external.ids which will return a list of the external IDs for the given account. It is only allowed to get this list for a user's own account. To determine whether or not the user can delete an external ID, we need to know if that ID was used to log into the current session. The WebSession is not available outside of gerrit-httpd, so pass the external ID through a property on the current user. Change-Id: Iab7ef2ffa06c3a8d9f22472308051b4b73668f82
This commit is contained in:
@@ -90,6 +90,7 @@ import com.google.gerrit.extensions.restapi.RestView;
|
||||
import com.google.gerrit.extensions.restapi.TopLevelResource;
|
||||
import com.google.gerrit.extensions.restapi.UnprocessableEntityException;
|
||||
import com.google.gerrit.httpd.WebSession;
|
||||
import com.google.gerrit.reviewdb.client.AccountExternalId;
|
||||
import com.google.gerrit.server.AccessPath;
|
||||
import com.google.gerrit.server.AnonymousUser;
|
||||
import com.google.gerrit.server.CurrentUser;
|
||||
@@ -1077,6 +1078,9 @@ public class RestApiServlet extends HttpServlet {
|
||||
CurrentUser user = globals.currentUser.get();
|
||||
if (isRead(req)) {
|
||||
user.setAccessPath(AccessPath.REST_API);
|
||||
CurrentUser.PropertyKey<AccountExternalId.Key> k =
|
||||
CurrentUser.PropertyKey.create();
|
||||
user.put(k, globals.webSession.get().getLastLoginExternalId());
|
||||
} else if (user instanceof AnonymousUser) {
|
||||
throw new AuthException("Authentication required");
|
||||
} else if (!globals.webSession.get().isAccessPathOk(AccessPath.REST_API)) {
|
||||
|
Reference in New Issue
Block a user