summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/main/java/com/google/gerrit/server/account/ChangeUserName.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/account/ChangeUserName.java')
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/account/ChangeUserName.java122
1 files changed, 0 insertions, 122 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/ChangeUserName.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/ChangeUserName.java
deleted file mode 100644
index aa6baa11bb..0000000000
--- a/gerrit-server/src/main/java/com/google/gerrit/server/account/ChangeUserName.java
+++ /dev/null
@@ -1,122 +0,0 @@
-// Copyright (C) 2009 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.gerrit.server.account;
-
-import static com.google.gerrit.server.account.externalids.ExternalId.SCHEME_USERNAME;
-
-import com.google.gerrit.common.Nullable;
-import com.google.gerrit.common.errors.NameAlreadyUsedException;
-import com.google.gerrit.server.IdentifiedUser;
-import com.google.gerrit.server.account.externalids.ExternalId;
-import com.google.gerrit.server.account.externalids.ExternalIds;
-import com.google.gerrit.server.account.externalids.ExternalIdsUpdate;
-import com.google.gerrit.server.ssh.SshKeyCache;
-import com.google.gwtjsonrpc.common.VoidResult;
-import com.google.gwtorm.server.OrmDuplicateKeyException;
-import com.google.gwtorm.server.OrmException;
-import com.google.inject.Inject;
-import com.google.inject.assistedinject.Assisted;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.concurrent.Callable;
-import org.eclipse.jgit.errors.ConfigInvalidException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/** Operation to change the username of an account. */
-public class ChangeUserName implements Callable<VoidResult> {
- private static final Logger log = LoggerFactory.getLogger(ChangeUserName.class);
-
- public static final String USERNAME_CANNOT_BE_CHANGED = "Username cannot be changed.";
-
- /** Generic factory to change any user's username. */
- public interface Factory {
- ChangeUserName create(IdentifiedUser user, String newUsername);
- }
-
- private final SshKeyCache sshKeyCache;
- private final ExternalIds externalIds;
- private final ExternalIdsUpdate.Server externalIdsUpdateFactory;
-
- private final IdentifiedUser user;
- private final String newUsername;
-
- @Inject
- ChangeUserName(
- SshKeyCache sshKeyCache,
- ExternalIds externalIds,
- ExternalIdsUpdate.Server externalIdsUpdateFactory,
- @Assisted IdentifiedUser user,
- @Nullable @Assisted String newUsername) {
- this.sshKeyCache = sshKeyCache;
- this.externalIds = externalIds;
- this.externalIdsUpdateFactory = externalIdsUpdateFactory;
- this.user = user;
- this.newUsername = newUsername;
- }
-
- @Override
- public VoidResult call()
- throws OrmException, NameAlreadyUsedException, InvalidUserNameException, IOException,
- ConfigInvalidException {
- Collection<ExternalId> old = externalIds.byAccount(user.getAccountId(), SCHEME_USERNAME);
- if (!old.isEmpty()) {
- log.error(
- "External id with scheme \"username:\" already exists for the user {}",
- user.getAccountId());
- throw new IllegalStateException(USERNAME_CANNOT_BE_CHANGED);
- }
-
- ExternalIdsUpdate externalIdsUpdate = externalIdsUpdateFactory.create();
- if (newUsername != null && !newUsername.isEmpty()) {
- if (!ExternalId.isValidUsername(newUsername)) {
- throw new InvalidUserNameException();
- }
-
- ExternalId.Key key = ExternalId.Key.create(SCHEME_USERNAME, newUsername);
- try {
- String password = null;
- for (ExternalId i : old) {
- if (i.password() != null) {
- password = i.password();
- }
- }
- externalIdsUpdate.insert(ExternalId.create(key, user.getAccountId(), null, password));
- log.info("Created the new external Id with key: {}", key);
- } catch (OrmDuplicateKeyException dupeErr) {
- // If we are using this identity, don't report the exception.
- //
- ExternalId other = externalIds.get(key);
- if (other != null && other.accountId().equals(user.getAccountId())) {
- return VoidResult.INSTANCE;
- }
-
- // Otherwise, someone else has this identity.
- //
- throw new NameAlreadyUsedException(newUsername);
- }
- }
-
- // If we have any older user names, remove them.
- //
- externalIdsUpdate.delete(old);
- for (ExternalId extId : old) {
- sshKeyCache.evict(extId.key().id());
- }
-
- sshKeyCache.evict(newUsername);
- return VoidResult.INSTANCE;
- }
-}