Convert project permission check to PermissionBackend
Change-Id: Idea0f7f73127d55f2f8079d6934d14e6bb397ff9
diff --git a/src/main/java/com/googlesource/gerrit/plugins/reviewers/SuggestProjectReviewers.java b/src/main/java/com/googlesource/gerrit/plugins/reviewers/SuggestProjectReviewers.java
index f71c591..e08fa34 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/reviewers/SuggestProjectReviewers.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/reviewers/SuggestProjectReviewers.java
@@ -15,6 +15,7 @@
package com.googlesource.gerrit.plugins.reviewers;
import com.google.gerrit.extensions.common.SuggestedReviewerInfo;
+import com.google.gerrit.extensions.restapi.AuthException;
import com.google.gerrit.extensions.restapi.BadRequestException;
import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.gerrit.reviewdb.client.Account;
@@ -25,6 +26,9 @@
import com.google.gerrit.server.account.AccountVisibility;
import com.google.gerrit.server.change.SuggestReviewers;
import com.google.gerrit.server.config.GerritServerConfig;
+import com.google.gerrit.server.permissions.PermissionBackend;
+import com.google.gerrit.server.permissions.PermissionBackendException;
+import com.google.gerrit.server.permissions.ProjectPermission;
import com.google.gerrit.server.project.ProjectResource;
import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
@@ -35,14 +39,18 @@
public class SuggestProjectReviewers extends SuggestReviewers
implements RestReadView<ProjectResource> {
+ private final PermissionBackend permissionBackend;
+
@Inject
SuggestProjectReviewers(
AccountVisibility av,
IdentifiedUser.GenericFactory identifiedUserFactory,
Provider<ReviewDb> dbProvider,
@GerritServerConfig Config cfg,
- ReviewersUtil reviewersUtil) {
+ ReviewersUtil reviewersUtil,
+ PermissionBackend permissionBackend) {
super(av, identifiedUserFactory, dbProvider, cfg, reviewersUtil);
+ this.permissionBackend = permissionBackend;
}
@Override
@@ -56,7 +64,12 @@
@Override
public boolean isVisibleTo(Account.Id account) throws OrmException {
IdentifiedUser who = identifiedUserFactory.create(account);
- return rsrc.getControl().forUser(who).isVisible();
+ try {
+ permissionBackend.user(who).project(rsrc.getNameKey()).check(ProjectPermission.ACCESS);
+ return true;
+ } catch (AuthException | PermissionBackendException e) {
+ return false;
+ }
}
};
}