Eliminate usage of ProjectControl
Change-Id: I36e02a448ce5426b4608eaa2546cb529bbdb64b0
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserModel.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserModel.java
index f66ecff..d33c48b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserModel.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserModel.java
@@ -20,14 +20,12 @@
import com.gitblit.models.TeamModel;
import com.gitblit.models.UserModel;
import com.gitblit.utils.StringUtils;
-import com.google.gerrit.extensions.client.ProjectState;
import com.google.gerrit.reviewdb.client.Project.NameKey;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.permissions.PermissionBackend;
+import com.google.gerrit.server.permissions.PermissionBackend.ForProject;
import com.google.gerrit.server.permissions.ProjectPermission;
-import com.google.gerrit.server.project.NoSuchProjectException;
-import com.google.gerrit.server.project.ProjectControl;
-import com.google.gerrit.server.project.ProjectControl.Factory;
+import com.google.gerrit.server.permissions.RefPermission;
import com.google.inject.Provider;
import java.util.HashSet;
import java.util.Set;
@@ -49,7 +47,6 @@
public final Set<String> repositories = new HashSet<String>();
public final Set<TeamModel> teams = new HashSet<TeamModel>();
- private final transient ProjectControl.Factory projectControlFactory;
private final transient Provider<CurrentUser> userProvider;
private final transient PermissionBackend permissionBackend;
@@ -57,41 +54,31 @@
public boolean isAuthenticated;
public GerritToGitBlitUserModel(String username) {
- this(username, null, null, null);
+ this(username, null, null);
}
public GerritToGitBlitUserModel(
- String username,
- ProjectControl.Factory projectControlFactory,
- Provider<CurrentUser> userProvider,
- PermissionBackend persmissionBackend) {
+ String username, Provider<CurrentUser> userProvider, PermissionBackend permissionBackend) {
super(username);
this.username = username;
this.isAuthenticated = true;
- this.projectControlFactory = projectControlFactory;
this.userProvider = userProvider;
- this.permissionBackend = persmissionBackend;
+ this.permissionBackend = permissionBackend;
}
- public GerritToGitBlitUserModel(ProjectControl.Factory projectControlFactory) {
+ public GerritToGitBlitUserModel() {
super(ANONYMOUS_USER);
- this.projectControlFactory = projectControlFactory;
this.userProvider = null;
this.permissionBackend = null;
}
- @Deprecated
- public boolean canAccessRepository(String repositoryName) {
- boolean result = false;
-
- try {
- ProjectControl control = projectControlFactory.controlFor(new NameKey(repositoryName));
- result = control != null;
- } catch (NoSuchProjectException e) {
- result = false;
- }
-
- return result;
+ @Override
+ public boolean canView(RepositoryModel repository, String ref) {
+ return permissionBackend
+ .user(userProvider)
+ .project(new NameKey(StringUtils.stripDotGit(repository.name)))
+ .ref(ref)
+ .testOrFalse(RefPermission.READ);
}
@Override
@@ -99,59 +86,28 @@
RepositoryModel repository,
AccessRestrictionType ifRestriction,
AccessPermission requirePermission) {
- boolean result = false;
-
- try {
- NameKey project = new NameKey(getRepositoryName(repository.name));
- ProjectControl control = projectControlFactory.controlFor(project);
-
- if (control == null) {
- return false;
- }
-
- switch (ifRestriction) {
- case VIEW:
- return !control.getProject().getState().equals(ProjectState.HIDDEN);
- case CLONE:
- return permissionBackend
- .user(userProvider)
- .project(project)
- .testOrFalse(ProjectPermission.RUN_UPLOAD_PACK);
- case PUSH:
- return permissionBackend
- .user(userProvider)
- .project(project)
- .testOrFalse(ProjectPermission.RUN_RECEIVE_PACK);
- default:
- return true;
- }
- } catch (NoSuchProjectException e) {
- result = false;
+ ForProject projectPermissions =
+ permissionBackend
+ .user(userProvider)
+ .project(new NameKey(StringUtils.stripDotGit(repository.name)));
+ switch (ifRestriction) {
+ case VIEW:
+ return projectPermissions.testOrFalse(ProjectPermission.ACCESS);
+ case CLONE:
+ return projectPermissions.testOrFalse(ProjectPermission.RUN_UPLOAD_PACK);
+ case PUSH:
+ return projectPermissions.testOrFalse(ProjectPermission.RUN_RECEIVE_PACK);
+ default:
+ return true;
}
-
- return result;
- }
-
- public String getRepositoryName(String name) {
- if (name.endsWith(".git")) {
- name = name.substring(0, name.length() - 4);
- }
- return name;
}
@Override
public boolean hasRepositoryPermission(String name) {
- boolean result = false;
-
- try {
- name = getRepositoryName(name);
- ProjectControl control = projectControlFactory.controlFor(new NameKey(name));
- result = control != null && !control.getProject().getState().equals(ProjectState.HIDDEN);
- } catch (NoSuchProjectException e) {
- result = false;
- }
-
- return result;
+ return permissionBackend
+ .user(userProvider)
+ .project(new NameKey(StringUtils.stripDotGit(name)))
+ .testOrFalse(ProjectPermission.ACCESS);
}
public boolean hasTeamAccess(String repositoryName) {
@@ -218,7 +174,7 @@
return username.compareTo(o.username);
}
- public static UserModel getAnonymous(Factory projectControl) {
- return new GerritToGitBlitUserModel(ANONYMOUS_USER, projectControl, null, null);
+ public static UserModel getAnonymous() {
+ return new GerritToGitBlitUserModel(ANONYMOUS_USER, null, null);
}
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserService.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserService.java
index 21bd512..ed2ac6f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserService.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserService.java
@@ -32,7 +32,6 @@
import com.google.gerrit.server.account.AuthRequest;
import com.google.gerrit.server.account.AuthResult;
import com.google.gerrit.server.permissions.PermissionBackend;
-import com.google.gerrit.server.project.ProjectControl;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
@@ -50,7 +49,6 @@
private final Provider<CurrentUser> userProvider;
private final PermissionBackend permissionBackend;
- private final ProjectControl.Factory projectControl;
private final AccountManager accountManager;
private final DynamicItem<WebSession> webSession;
@@ -60,12 +58,10 @@
public GerritToGitBlitUserService(
Provider<CurrentUser> userProvider,
PermissionBackend permissionBackend,
- ProjectControl.Factory projectControl,
AccountManager accountManager,
DynamicItem<WebSession> webSession) {
this.userProvider = userProvider;
this.permissionBackend = permissionBackend;
- this.projectControl = projectControl;
this.accountManager = accountManager;
this.webSession = webSession;
}
@@ -75,7 +71,7 @@
String passwordString = new String(password);
if (username.equals(GerritToGitBlitUserModel.ANONYMOUS_USER)) {
- return GerritToGitBlitUserModel.getAnonymous(projectControl);
+ return GerritToGitBlitUserModel.getAnonymous();
} else if (passwordString.startsWith(GerritToGitBlitUserService.SESSIONAUTH)) {
return authenticateSSO(
username, passwordString.substring(GerritToGitBlitUserService.SESSIONAUTH.length()));
@@ -102,7 +98,7 @@
return null;
}
- return new GerritToGitBlitUserModel(username, projectControl, userProvider, permissionBackend);
+ return new GerritToGitBlitUserModel(username, userProvider, permissionBackend);
}
public UserModel authenticateBasicAuth(String username, String password) {
@@ -122,7 +118,7 @@
return null;
}
- return new GerritToGitBlitUserModel(username, projectControl, userProvider, permissionBackend);
+ return new GerritToGitBlitUserModel(username, userProvider, permissionBackend);
}
@Override
@@ -142,7 +138,7 @@
httpRequest.getSession().setAttribute(Constants.ATTRIB_AUTHTYPE, AuthenticationType.CONTAINER);
if (Strings.isNullOrEmpty(gerritUsername) || Strings.isNullOrEmpty(gerritToken)) {
- return GerritToGitBlitUserModel.getAnonymous(projectControl);
+ return GerritToGitBlitUserModel.getAnonymous();
} else {
return authenticateSSO(gerritUsername, gerritToken);
}
@@ -220,7 +216,7 @@
@Override
public UserModel getUserModel(String username) {
- return new GerritToGitBlitUserModel(username, projectControl, userProvider, permissionBackend);
+ return new GerritToGitBlitUserModel(username, userProvider, permissionBackend);
}
@Override