Remove access of groups related db tables from MembersCollection
Change-Id: Iad6a15df30d39de75357b144bbe3f905cca92780
This commit is contained in:
parent
c16a230c08
commit
a3d9d3bb7c
@ -16,7 +16,9 @@ package com.google.gerrit.server.group;
|
|||||||
|
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.google.common.collect.Iterables;
|
import com.google.common.collect.Iterables;
|
||||||
|
import com.google.gerrit.reviewdb.client.Account;
|
||||||
import com.google.gerrit.reviewdb.client.AccountGroup;
|
import com.google.gerrit.reviewdb.client.AccountGroup;
|
||||||
|
import com.google.gerrit.reviewdb.client.AccountGroupMember;
|
||||||
import com.google.gerrit.reviewdb.client.AccountGroupName;
|
import com.google.gerrit.reviewdb.client.AccountGroupName;
|
||||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||||
import com.google.gwtorm.server.OrmDuplicateKeyException;
|
import com.google.gwtorm.server.OrmDuplicateKeyException;
|
||||||
@ -57,4 +59,10 @@ public class Groups {
|
|||||||
public ImmutableList<AccountGroup> getAll(ReviewDb db) throws OrmException {
|
public ImmutableList<AccountGroup> getAll(ReviewDb db) throws OrmException {
|
||||||
return ImmutableList.copyOf(db.accountGroups().all());
|
return ImmutableList.copyOf(db.accountGroups().all());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isMember(ReviewDb db, AccountGroup group, Account.Id accountId)
|
||||||
|
throws OrmException {
|
||||||
|
AccountGroupMember.Key key = new AccountGroupMember.Key(accountId, group.getId());
|
||||||
|
return db.accountGroupMembers().get(key) != null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@ import com.google.gerrit.extensions.restapi.MethodNotAllowedException;
|
|||||||
import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
|
import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
|
||||||
import com.google.gerrit.extensions.restapi.RestView;
|
import com.google.gerrit.extensions.restapi.RestView;
|
||||||
import com.google.gerrit.extensions.restapi.TopLevelResource;
|
import com.google.gerrit.extensions.restapi.TopLevelResource;
|
||||||
import com.google.gerrit.reviewdb.client.AccountGroupMember;
|
import com.google.gerrit.reviewdb.client.AccountGroup;
|
||||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||||
import com.google.gerrit.server.IdentifiedUser;
|
import com.google.gerrit.server.IdentifiedUser;
|
||||||
import com.google.gerrit.server.account.AccountsCollection;
|
import com.google.gerrit.server.account.AccountsCollection;
|
||||||
@ -41,6 +41,7 @@ public class MembersCollection
|
|||||||
private final DynamicMap<RestView<MemberResource>> views;
|
private final DynamicMap<RestView<MemberResource>> views;
|
||||||
private final Provider<ListMembers> list;
|
private final Provider<ListMembers> list;
|
||||||
private final AccountsCollection accounts;
|
private final AccountsCollection accounts;
|
||||||
|
private final Groups groups;
|
||||||
private final Provider<ReviewDb> db;
|
private final Provider<ReviewDb> db;
|
||||||
private final AddMembers put;
|
private final AddMembers put;
|
||||||
|
|
||||||
@ -49,11 +50,13 @@ public class MembersCollection
|
|||||||
DynamicMap<RestView<MemberResource>> views,
|
DynamicMap<RestView<MemberResource>> views,
|
||||||
Provider<ListMembers> list,
|
Provider<ListMembers> list,
|
||||||
AccountsCollection accounts,
|
AccountsCollection accounts,
|
||||||
|
Groups groups,
|
||||||
Provider<ReviewDb> db,
|
Provider<ReviewDb> db,
|
||||||
AddMembers put) {
|
AddMembers put) {
|
||||||
this.views = views;
|
this.views = views;
|
||||||
this.list = list;
|
this.list = list;
|
||||||
this.accounts = accounts;
|
this.accounts = accounts;
|
||||||
|
this.groups = groups;
|
||||||
this.db = db;
|
this.db = db;
|
||||||
this.put = put;
|
this.put = put;
|
||||||
}
|
}
|
||||||
@ -67,14 +70,13 @@ public class MembersCollection
|
|||||||
public MemberResource parse(GroupResource parent, IdString id)
|
public MemberResource parse(GroupResource parent, IdString id)
|
||||||
throws MethodNotAllowedException, AuthException, ResourceNotFoundException, OrmException,
|
throws MethodNotAllowedException, AuthException, ResourceNotFoundException, OrmException,
|
||||||
IOException, ConfigInvalidException {
|
IOException, ConfigInvalidException {
|
||||||
if (parent.toAccountGroup() == null) {
|
AccountGroup group = parent.toAccountGroup();
|
||||||
|
if (group == null) {
|
||||||
throw new MethodNotAllowedException();
|
throw new MethodNotAllowedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
IdentifiedUser user = accounts.parse(TopLevelResource.INSTANCE, id).getUser();
|
IdentifiedUser user = accounts.parse(TopLevelResource.INSTANCE, id).getUser();
|
||||||
AccountGroupMember.Key key =
|
if (groups.isMember(db.get(), group, user.getAccountId())
|
||||||
new AccountGroupMember.Key(user.getAccountId(), parent.toAccountGroup().getId());
|
|
||||||
if (db.get().accountGroupMembers().get(key) != null
|
|
||||||
&& parent.getControl().canSeeMember(user.getAccountId())) {
|
&& parent.getControl().canSeeMember(user.getAccountId())) {
|
||||||
return new MemberResource(parent, user);
|
return new MemberResource(parent, user);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user