Merge "ProjectState: Remove controlFor(CurrentUser)"
This commit is contained in:
@@ -45,10 +45,13 @@ public class DefaultPermissionBackend extends PermissionBackend {
|
||||
private static final CurrentUser.PropertyKey<Boolean> IS_ADMIN = CurrentUser.PropertyKey.create();
|
||||
|
||||
private final ProjectCache projectCache;
|
||||
private final ProjectControl.Factory projectControlFactory;
|
||||
|
||||
@Inject
|
||||
DefaultPermissionBackend(ProjectCache projectCache) {
|
||||
DefaultPermissionBackend(
|
||||
ProjectCache projectCache, ProjectControl.Factory projectControlFactory) {
|
||||
this.projectCache = projectCache;
|
||||
this.projectControlFactory = projectControlFactory;
|
||||
}
|
||||
|
||||
private CapabilityCollection capabilities() {
|
||||
@@ -73,7 +76,7 @@ public class DefaultPermissionBackend extends PermissionBackend {
|
||||
try {
|
||||
ProjectState state = projectCache.checkedGet(project);
|
||||
if (state != null) {
|
||||
return state.controlFor(user).asForProject().database(db);
|
||||
return projectControlFactory.create(user, state).asForProject().database(db);
|
||||
}
|
||||
return FailedPermissionBackend.project("not found", new NoSuchProjectException(project));
|
||||
} catch (IOException e) {
|
||||
|
||||
@@ -79,7 +79,7 @@ class ProjectControl {
|
||||
|
||||
private final Set<AccountGroup.UUID> uploadGroups;
|
||||
private final Set<AccountGroup.UUID> receiveGroups;
|
||||
private final PermissionBackend.WithUser perm;
|
||||
private final PermissionBackend permissionBackend;
|
||||
private final CurrentUser user;
|
||||
private final ProjectState state;
|
||||
private final ChangeControl.Factory changeControlFactory;
|
||||
@@ -102,13 +102,21 @@ class ProjectControl {
|
||||
this.uploadGroups = uploadGroups;
|
||||
this.receiveGroups = receiveGroups;
|
||||
this.permissionFilter = permissionFilter;
|
||||
this.perm = permissionBackend.user(who);
|
||||
this.permissionBackend = permissionBackend;
|
||||
user = who;
|
||||
state = ps;
|
||||
}
|
||||
|
||||
ProjectControl forUser(CurrentUser who) {
|
||||
ProjectControl r = state.controlFor(who);
|
||||
ProjectControl r =
|
||||
new ProjectControl(
|
||||
uploadGroups,
|
||||
receiveGroups,
|
||||
permissionFilter,
|
||||
changeControlFactory,
|
||||
permissionBackend,
|
||||
who,
|
||||
state);
|
||||
// Not per-user, and reusing saves lookup time.
|
||||
r.allSections = allSections;
|
||||
return r;
|
||||
@@ -173,7 +181,7 @@ class ProjectControl {
|
||||
|
||||
boolean isAdmin() {
|
||||
try {
|
||||
perm.check(GlobalPermission.ADMINISTRATE_SERVER);
|
||||
permissionBackend.user(user).check(GlobalPermission.ADMINISTRATE_SERVER);
|
||||
return true;
|
||||
} catch (AuthException | PermissionBackendException e) {
|
||||
return false;
|
||||
|
||||
@@ -87,7 +87,6 @@ public class ProjectState {
|
||||
private final SitePaths sitePaths;
|
||||
private final AllProjectsName allProjectsName;
|
||||
private final ProjectCache projectCache;
|
||||
private final ProjectControl.Factory projectControlFactory;
|
||||
private final PrologEnvironment.Factory envFactory;
|
||||
private final GitRepositoryManager gitMgr;
|
||||
private final RulesCache rulesCache;
|
||||
@@ -121,7 +120,6 @@ public class ProjectState {
|
||||
final ProjectCache projectCache,
|
||||
final AllProjectsName allProjectsName,
|
||||
final AllUsersName allUsersName,
|
||||
final ProjectControl.Factory projectControlFactory,
|
||||
final PrologEnvironment.Factory envFactory,
|
||||
final GitRepositoryManager gitMgr,
|
||||
final RulesCache rulesCache,
|
||||
@@ -133,7 +131,6 @@ public class ProjectState {
|
||||
this.isAllProjects = config.getProject().getNameKey().equals(allProjectsName);
|
||||
this.isAllUsers = config.getProject().getNameKey().equals(allUsersName);
|
||||
this.allProjectsName = allProjectsName;
|
||||
this.projectControlFactory = projectControlFactory;
|
||||
this.envFactory = envFactory;
|
||||
this.gitMgr = gitMgr;
|
||||
this.rulesCache = rulesCache;
|
||||
@@ -355,10 +352,6 @@ public class ProjectState {
|
||||
return result;
|
||||
}
|
||||
|
||||
public ProjectControl controlFor(CurrentUser user) {
|
||||
return projectControlFactory.create(user, this);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return an iterable that walks through this project and then the parents of this project.
|
||||
* Starts from this project and progresses up the hierarchy to All-Projects.
|
||||
|
||||
@@ -208,7 +208,6 @@ public class RefControlTest {
|
||||
@Inject private SingleVersionListener singleVersionListener;
|
||||
@Inject private InMemoryDatabase schemaFactory;
|
||||
@Inject private ThreadLocalRequestContext requestContext;
|
||||
@Inject private ProjectControl.Factory projectControlFactory;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
@@ -856,7 +855,6 @@ public class RefControlTest {
|
||||
projectCache,
|
||||
allProjectsName,
|
||||
allUsersName,
|
||||
projectControlFactory,
|
||||
envFactory,
|
||||
repoManager,
|
||||
rulesCache,
|
||||
|
||||
Reference in New Issue
Block a user