diff --git a/gerrit-common/src/main/java/com/google/gerrit/common/data/GroupAdminService.java b/gerrit-common/src/main/java/com/google/gerrit/common/data/GroupAdminService.java index 96a80cc635..5adc6a548e 100644 --- a/gerrit-common/src/main/java/com/google/gerrit/common/data/GroupAdminService.java +++ b/gerrit-common/src/main/java/com/google/gerrit/common/data/GroupAdminService.java @@ -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 callback); - @Audit - @SignInRequired - void addGroupMember(AccountGroup.Id groupId, String nameOrEmail, - AsyncCallback callback); - @Audit @SignInRequired void addGroupInclude(AccountGroup.Id groupId, AccountGroup.UUID incGroupUUID, String incGroupName, AsyncCallback callback); - @Audit - @SignInRequired - void deleteGroupMembers(AccountGroup.Id groupId, - Set keys, AsyncCallback callback); - @Audit @SignInRequired void deleteGroupIncludes(AccountGroup.Id groupId, diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/GroupAdminServiceImpl.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/GroupAdminServiceImpl.java index 1651c2d517..1121498690 100644 --- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/GroupAdminServiceImpl.java +++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/GroupAdminServiceImpl.java @@ -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 schema, final Provider 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 callback) { - run(callback, new Action() { - 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 callback) { @@ -252,60 +194,6 @@ class GroupAdminServiceImpl extends BaseServiceImplementation implements }); } - public void deleteGroupMembers(final AccountGroup.Id groupId, - final Set keys, - final AsyncCallback callback) { - run(callback, new Action() { - 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 keys, final AsyncCallback 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; - } - } }