Skip to content

Commit 0ebcef8

Browse files
committed
Adapt code to permission backend
Bug: Issue 8756 Change-Id: I85be123b204358855fec887b0b377f8fc4f857e9
1 parent 8f58cc9 commit 0ebcef8

File tree

2 files changed

+39
-10
lines changed

2 files changed

+39
-10
lines changed

src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserModel.java

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,13 @@
2222
import com.gitblit.utils.StringUtils;
2323
import com.google.gerrit.extensions.client.ProjectState;
2424
import com.google.gerrit.reviewdb.client.Project.NameKey;
25+
import com.google.gerrit.server.CurrentUser;
26+
import com.google.gerrit.server.permissions.PermissionBackend;
27+
import com.google.gerrit.server.permissions.ProjectPermission;
2528
import com.google.gerrit.server.project.NoSuchProjectException;
2629
import com.google.gerrit.server.project.ProjectControl;
2730
import com.google.gerrit.server.project.ProjectControl.Factory;
31+
import com.google.inject.Provider;
2832
import java.util.HashSet;
2933
import java.util.Set;
3034

@@ -46,24 +50,34 @@ public class GerritToGitBlitUserModel extends UserModel {
4650
public final Set<TeamModel> teams = new HashSet<TeamModel>();
4751

4852
private final transient ProjectControl.Factory projectControlFactory;
53+
private final transient Provider<CurrentUser> userProvider;
54+
private final transient PermissionBackend permissionBackend;
4955

5056
// non-persisted fields
5157
public boolean isAuthenticated;
5258

5359
public GerritToGitBlitUserModel(String username) {
54-
this(username, null);
60+
this(username, null, null, null);
5561
}
5662

57-
public GerritToGitBlitUserModel(String username, ProjectControl.Factory projectControlFactory) {
63+
public GerritToGitBlitUserModel(
64+
String username,
65+
ProjectControl.Factory projectControlFactory,
66+
Provider<CurrentUser> userProvider,
67+
PermissionBackend persmissionBackend) {
5868
super(username);
5969
this.username = username;
6070
this.isAuthenticated = true;
6171
this.projectControlFactory = projectControlFactory;
72+
this.userProvider = userProvider;
73+
this.permissionBackend = persmissionBackend;
6274
}
6375

6476
public GerritToGitBlitUserModel(ProjectControl.Factory projectControlFactory) {
6577
super(ANONYMOUS_USER);
6678
this.projectControlFactory = projectControlFactory;
79+
this.userProvider = null;
80+
this.permissionBackend = null;
6781
}
6882

6983
@Deprecated
@@ -88,8 +102,8 @@ protected boolean canAccess(
88102
boolean result = false;
89103

90104
try {
91-
ProjectControl control =
92-
projectControlFactory.controlFor(new NameKey(getRepositoryName(repository.name)));
105+
NameKey project = new NameKey(getRepositoryName(repository.name));
106+
ProjectControl control = projectControlFactory.controlFor(project);
93107

94108
if (control == null) {
95109
return false;
@@ -99,9 +113,15 @@ protected boolean canAccess(
99113
case VIEW:
100114
return !control.getProject().getState().equals(ProjectState.HIDDEN);
101115
case CLONE:
102-
return control.canRunUploadPack();
116+
return permissionBackend
117+
.user(userProvider)
118+
.project(project)
119+
.testOrFalse(ProjectPermission.RUN_UPLOAD_PACK);
103120
case PUSH:
104-
return control.canRunReceivePack();
121+
permissionBackend
122+
.user(userProvider)
123+
.project(project)
124+
.testOrFalse(ProjectPermission.RUN_RECEIVE_PACK);
105125
default:
106126
return true;
107127
}
@@ -199,6 +219,6 @@ public int compareTo(UserModel o) {
199219
}
200220

201221
public static UserModel getAnonymous(Factory projectControl) {
202-
return new GerritToGitBlitUserModel(ANONYMOUS_USER, projectControl);
222+
return new GerritToGitBlitUserModel(ANONYMOUS_USER, projectControl, null, null);
203223
}
204224
}

src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserService.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,14 @@
2727
import com.google.common.base.Strings;
2828
import com.google.gerrit.extensions.registration.DynamicItem;
2929
import com.google.gerrit.httpd.WebSession;
30+
import com.google.gerrit.server.CurrentUser;
3031
import com.google.gerrit.server.account.AccountManager;
3132
import com.google.gerrit.server.account.AuthRequest;
3233
import com.google.gerrit.server.account.AuthResult;
34+
import com.google.gerrit.server.permissions.PermissionBackend;
3335
import com.google.gerrit.server.project.ProjectControl;
3436
import com.google.inject.Inject;
37+
import com.google.inject.Provider;
3538
import com.google.inject.Singleton;
3639
import java.util.Collection;
3740
import java.util.Collections;
@@ -45,6 +48,8 @@
4548
public class GerritToGitBlitUserService implements IAuthenticationManager, IUserManager {
4649
private static final Logger log = LoggerFactory.getLogger(GerritToGitBlitUserService.class);
4750

51+
private final Provider<CurrentUser> userProvider;
52+
private final PermissionBackend permissionBackend;
4853
private final ProjectControl.Factory projectControl;
4954
private final AccountManager accountManager;
5055
private final DynamicItem<WebSession> webSession;
@@ -53,9 +58,13 @@ public class GerritToGitBlitUserService implements IAuthenticationManager, IUser
5358

5459
@Inject
5560
public GerritToGitBlitUserService(
61+
Provider<CurrentUser> userProvider,
62+
PermissionBackend permissionBackend,
5663
ProjectControl.Factory projectControl,
5764
AccountManager accountManager,
5865
DynamicItem<WebSession> webSession) {
66+
this.userProvider = userProvider;
67+
this.permissionBackend = permissionBackend;
5968
this.projectControl = projectControl;
6069
this.accountManager = accountManager;
6170
this.webSession = webSession;
@@ -93,7 +102,7 @@ public UserModel authenticateSSO(String username, String sessionToken) {
93102
return null;
94103
}
95104

96-
return new GerritToGitBlitUserModel(username, projectControl);
105+
return new GerritToGitBlitUserModel(username, projectControl, userProvider, permissionBackend);
97106
}
98107

99108
public UserModel authenticateBasicAuth(String username, String password) {
@@ -113,7 +122,7 @@ public UserModel authenticateBasicAuth(String username, String password) {
113122
return null;
114123
}
115124

116-
return new GerritToGitBlitUserModel(username, projectControl);
125+
return new GerritToGitBlitUserModel(username, projectControl, userProvider, permissionBackend);
117126
}
118127

119128
@Override
@@ -211,7 +220,7 @@ public UserModel getUserModel(char[] cookie) {
211220

212221
@Override
213222
public UserModel getUserModel(String username) {
214-
return new GerritToGitBlitUserModel(username, projectControl);
223+
return new GerritToGitBlitUserModel(username, projectControl, userProvider, permissionBackend);
215224
}
216225

217226
@Override

0 commit comments

Comments
 (0)