Remove RPCs for adding/deleting group members
The RPCs for adding/deleting group members are not used anymore. This functionality is now available via the REST API. Change-Id: I90d4f278f86795c881417c7ab8d446bcccfd8018 Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
This commit is contained in:
@@ -18,7 +18,6 @@ import com.google.gerrit.common.audit.Audit;
|
||||
import com.google.gerrit.common.auth.SignInRequired;
|
||||
import com.google.gerrit.reviewdb.client.AccountGroup;
|
||||
import com.google.gerrit.reviewdb.client.AccountGroupIncludeByUuid;
|
||||
import com.google.gerrit.reviewdb.client.AccountGroupMember;
|
||||
import com.google.gwtjsonrpc.common.AsyncCallback;
|
||||
import com.google.gwtjsonrpc.common.RemoteJsonService;
|
||||
import com.google.gwtjsonrpc.common.RpcImpl;
|
||||
@@ -63,21 +62,11 @@ public interface GroupAdminService extends RemoteJsonService {
|
||||
void changeGroupType(AccountGroup.Id groupId, AccountGroup.Type newType,
|
||||
AsyncCallback<VoidResult> callback);
|
||||
|
||||
@Audit
|
||||
@SignInRequired
|
||||
void addGroupMember(AccountGroup.Id groupId, String nameOrEmail,
|
||||
AsyncCallback<GroupDetail> callback);
|
||||
|
||||
@Audit
|
||||
@SignInRequired
|
||||
void addGroupInclude(AccountGroup.Id groupId, AccountGroup.UUID incGroupUUID,
|
||||
String incGroupName, AsyncCallback<GroupDetail> callback);
|
||||
|
||||
@Audit
|
||||
@SignInRequired
|
||||
void deleteGroupMembers(AccountGroup.Id groupId,
|
||||
Set<AccountGroupMember.Key> keys, AsyncCallback<VoidResult> callback);
|
||||
|
||||
@Audit
|
||||
@SignInRequired
|
||||
void deleteGroupIncludes(AccountGroup.Id groupId,
|
||||
|
@@ -18,9 +18,7 @@ import com.google.gerrit.common.data.GroupAdminService;
|
||||
import com.google.gerrit.common.data.GroupDetail;
|
||||
import com.google.gerrit.common.data.GroupOptions;
|
||||
import com.google.gerrit.common.data.GroupReference;
|
||||
import com.google.gerrit.common.errors.InactiveAccountException;
|
||||
import com.google.gerrit.common.errors.NameAlreadyUsedException;
|
||||
import com.google.gerrit.common.errors.NoSuchAccountException;
|
||||
import com.google.gerrit.common.errors.NoSuchEntityException;
|
||||
import com.google.gerrit.common.errors.NoSuchGroupException;
|
||||
import com.google.gerrit.httpd.rpc.BaseServiceImplementation;
|
||||
@@ -28,22 +26,13 @@ import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.reviewdb.client.AccountGroup;
|
||||
import com.google.gerrit.reviewdb.client.AccountGroupIncludeByUuid;
|
||||
import com.google.gerrit.reviewdb.client.AccountGroupIncludeByUuidAudit;
|
||||
import com.google.gerrit.reviewdb.client.AccountGroupMember;
|
||||
import com.google.gerrit.reviewdb.client.AccountGroupMemberAudit;
|
||||
import com.google.gerrit.reviewdb.client.AuthType;
|
||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||
import com.google.gerrit.server.IdentifiedUser;
|
||||
import com.google.gerrit.server.account.AccountCache;
|
||||
import com.google.gerrit.server.account.AccountException;
|
||||
import com.google.gerrit.server.account.AccountManager;
|
||||
import com.google.gerrit.server.account.AccountResolver;
|
||||
import com.google.gerrit.server.account.AuthRequest;
|
||||
import com.google.gerrit.server.account.GroupBackend;
|
||||
import com.google.gerrit.server.account.GroupBackends;
|
||||
import com.google.gerrit.server.account.GroupCache;
|
||||
import com.google.gerrit.server.account.GroupControl;
|
||||
import com.google.gerrit.server.account.GroupIncludeCache;
|
||||
import com.google.gerrit.server.config.AuthConfig;
|
||||
import com.google.gwtjsonrpc.common.AsyncCallback;
|
||||
import com.google.gwtjsonrpc.common.VoidResult;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
@@ -56,10 +45,6 @@ import java.util.Set;
|
||||
|
||||
class GroupAdminServiceImpl extends BaseServiceImplementation implements
|
||||
GroupAdminService {
|
||||
private final AccountCache accountCache;
|
||||
private final AccountResolver accountResolver;
|
||||
private final AccountManager accountManager;
|
||||
private final AuthType authType;
|
||||
private final GroupCache groupCache;
|
||||
private final GroupBackend groupBackend;
|
||||
private final GroupIncludeCache groupIncludeCache;
|
||||
@@ -72,11 +57,7 @@ class GroupAdminServiceImpl extends BaseServiceImplementation implements
|
||||
@Inject
|
||||
GroupAdminServiceImpl(final Provider<ReviewDb> schema,
|
||||
final Provider<IdentifiedUser> currentUser,
|
||||
final AccountCache accountCache,
|
||||
final GroupIncludeCache groupIncludeCache,
|
||||
final AccountResolver accountResolver,
|
||||
final AccountManager accountManager,
|
||||
final AuthConfig authConfig,
|
||||
final GroupCache groupCache,
|
||||
final GroupBackend groupBackend,
|
||||
final GroupControl.Factory groupControlFactory,
|
||||
@@ -84,11 +65,7 @@ class GroupAdminServiceImpl extends BaseServiceImplementation implements
|
||||
final RenameGroup.Factory renameGroupFactory,
|
||||
final GroupDetailHandler.Factory groupDetailFactory) {
|
||||
super(schema, currentUser);
|
||||
this.accountCache = accountCache;
|
||||
this.groupIncludeCache = groupIncludeCache;
|
||||
this.accountResolver = accountResolver;
|
||||
this.accountManager = accountManager;
|
||||
this.authType = authConfig.getAuthType();
|
||||
this.groupCache = groupCache;
|
||||
this.groupBackend = groupBackend;
|
||||
this.groupControlFactory = groupControlFactory;
|
||||
@@ -181,41 +158,6 @@ class GroupAdminServiceImpl extends BaseServiceImplementation implements
|
||||
});
|
||||
}
|
||||
|
||||
public void addGroupMember(final AccountGroup.Id groupId,
|
||||
final String nameOrEmail, final AsyncCallback<GroupDetail> callback) {
|
||||
run(callback, new Action<GroupDetail>() {
|
||||
public GroupDetail run(ReviewDb db) throws OrmException, Failure,
|
||||
NoSuchGroupException {
|
||||
final GroupControl control = groupControlFactory.validateFor(groupId);
|
||||
if (groupCache.get(groupId).getType() != AccountGroup.Type.INTERNAL) {
|
||||
throw new Failure(new NameAlreadyUsedException());
|
||||
}
|
||||
|
||||
final Account a = findAccount(nameOrEmail);
|
||||
if (!a.isActive()) {
|
||||
throw new Failure(new InactiveAccountException(a.getFullName()));
|
||||
}
|
||||
if (!control.canAddMember(a.getId())) {
|
||||
throw new Failure(new NoSuchEntityException());
|
||||
}
|
||||
|
||||
final AccountGroupMember.Key key =
|
||||
new AccountGroupMember.Key(a.getId(), groupId);
|
||||
AccountGroupMember m = db.accountGroupMembers().get(key);
|
||||
if (m == null) {
|
||||
m = new AccountGroupMember(key);
|
||||
db.accountGroupMembersAudit().insert(
|
||||
Collections.singleton(new AccountGroupMemberAudit(m,
|
||||
getAccountId())));
|
||||
db.accountGroupMembers().insert(Collections.singleton(m));
|
||||
accountCache.evict(m.getAccountId());
|
||||
}
|
||||
|
||||
return groupDetailFactory.create(groupId).call();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void addGroupInclude(final AccountGroup.Id groupId,
|
||||
final AccountGroup.UUID incGroupUUID, final String incGroupName,
|
||||
final AsyncCallback<GroupDetail> callback) {
|
||||
@@ -252,60 +194,6 @@ class GroupAdminServiceImpl extends BaseServiceImplementation implements
|
||||
});
|
||||
}
|
||||
|
||||
public void deleteGroupMembers(final AccountGroup.Id groupId,
|
||||
final Set<AccountGroupMember.Key> keys,
|
||||
final AsyncCallback<VoidResult> callback) {
|
||||
run(callback, new Action<VoidResult>() {
|
||||
public VoidResult run(final ReviewDb db) throws OrmException,
|
||||
NoSuchGroupException, Failure {
|
||||
final GroupControl control = groupControlFactory.validateFor(groupId);
|
||||
if (groupCache.get(groupId).getType() != AccountGroup.Type.INTERNAL) {
|
||||
throw new Failure(new NameAlreadyUsedException());
|
||||
}
|
||||
|
||||
for (final AccountGroupMember.Key k : keys) {
|
||||
if (!groupId.equals(k.getAccountGroupId())) {
|
||||
throw new Failure(new NoSuchEntityException());
|
||||
}
|
||||
}
|
||||
|
||||
final Account.Id me = getAccountId();
|
||||
for (final AccountGroupMember.Key k : keys) {
|
||||
final AccountGroupMember m = db.accountGroupMembers().get(k);
|
||||
if (m != null) {
|
||||
if (!control.canRemoveMember(m.getAccountId())) {
|
||||
throw new Failure(new NoSuchEntityException());
|
||||
}
|
||||
|
||||
AccountGroupMemberAudit audit = null;
|
||||
for (AccountGroupMemberAudit a : db.accountGroupMembersAudit()
|
||||
.byGroupAccount(m.getAccountGroupId(), m.getAccountId())) {
|
||||
if (a.isActive()) {
|
||||
audit = a;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (audit != null) {
|
||||
audit.removed(me);
|
||||
db.accountGroupMembersAudit()
|
||||
.update(Collections.singleton(audit));
|
||||
} else {
|
||||
audit = new AccountGroupMemberAudit(m, me);
|
||||
audit.removedLegacy();
|
||||
db.accountGroupMembersAudit()
|
||||
.insert(Collections.singleton(audit));
|
||||
}
|
||||
|
||||
db.accountGroupMembers().delete(Collections.singleton(m));
|
||||
accountCache.evict(m.getAccountId());
|
||||
}
|
||||
}
|
||||
return VoidResult.INSTANCE;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void deleteGroupIncludes(final AccountGroup.Id groupId,
|
||||
final Set<AccountGroupIncludeByUuid.Key> keys,
|
||||
final AsyncCallback<VoidResult> callback) {
|
||||
@@ -370,38 +258,4 @@ class GroupAdminServiceImpl extends BaseServiceImplementation implements
|
||||
throw new Failure(new NoSuchGroupException(group.getId()));
|
||||
}
|
||||
}
|
||||
|
||||
private Account findAccount(final String nameOrEmail) throws OrmException,
|
||||
Failure {
|
||||
Account r = accountResolver.find(nameOrEmail);
|
||||
if (r == null) {
|
||||
switch (authType) {
|
||||
case HTTP_LDAP:
|
||||
case CLIENT_SSL_CERT_LDAP:
|
||||
case LDAP:
|
||||
r = createAccountByLdap(nameOrEmail);
|
||||
break;
|
||||
default:
|
||||
}
|
||||
if (r == null) {
|
||||
throw new Failure(new NoSuchAccountException(nameOrEmail));
|
||||
}
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
private Account createAccountByLdap(String user) {
|
||||
if (!user.matches(Account.USER_NAME_PATTERN)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
try {
|
||||
final AuthRequest req = AuthRequest.forUser(user);
|
||||
req.setSkipAuthentication(true);
|
||||
return accountCache.get(accountManager.authenticate(req).getAccountId())
|
||||
.getAccount();
|
||||
} catch (AccountException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user