From af300016b678fd0694a4ecde00de167677acff80 Mon Sep 17 00:00:00 2001 From: Andre Klapper Date: Sat, 20 Apr 2024 19:11:55 +0200 Subject: [PATCH] Fix exception trying to rename user to their previous username Summary: When trying to rename a user, properly handle when the new username is the old username to avoid an exception. ``` EXCEPTION: (PhabricatorApplicationTransactionNoEffectException) Transactions have no effect: - Transaction (of type "user.rename") has no effect. at [/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php:2823] ``` Closes T15795 Test Plan: * As an admin, go to `/people/manage/123/` and select `Change Username`. Use the old username as the new username and select `Rename User`. Without the patch, get an exception. With the patch, get a proper error message within the dialog, as if you tried to set the new username to an empty string. * As an admin, go to `/people/create/`, select `Create Standard User`, and successfully create a new user account. * In an anonymous browser window, go to `/auth/start/`, click `Register New Account`, and successfully create a new user account. Reviewers: O1 Blessed Committers, valerio.bozzolan Reviewed By: O1 Blessed Committers, valerio.bozzolan Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno Maniphest Tasks: T15795 Differential Revision: https://we.phorge.it/D25601 --- .../people/xaction/PhabricatorUserUsernameTransaction.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/applications/people/xaction/PhabricatorUserUsernameTransaction.php b/src/applications/people/xaction/PhabricatorUserUsernameTransaction.php index e30a131cff..69889b740c 100644 --- a/src/applications/people/xaction/PhabricatorUserUsernameTransaction.php +++ b/src/applications/people/xaction/PhabricatorUserUsernameTransaction.php @@ -78,6 +78,10 @@ final class PhabricatorUserUsernameTransaction $errors[] = $this->newInvalidError( PhabricatorUser::describeValidUsername(), $xaction); + } else if ($this->generateOldValue($object) === $new) { + $errors[] = $this->newInvalidError( + pht('New username cannot be the old username.'), + $xaction); } $user = id(new PhabricatorPeopleQuery())