[FORM][ActorForms] Fullname length is now validated prior to being set

This commit is contained in:
Eliseu Amaro 2022-01-27 17:53:02 +00:00
parent 5036b72a71
commit 2e6f91f34e
Signed by: eliseuamaro
GPG Key ID: 96DA09D4B97BC2D5
1 changed files with 13 additions and 5 deletions

View File

@ -39,13 +39,14 @@ use App\Core\Form;
use function App\Core\I18n\_m; use function App\Core\I18n\_m;
use App\Entity\Actor; use App\Entity\Actor;
use App\Entity\LocalUser; use App\Entity\LocalUser;
use App\Util\Exception\ClientException;
use App\Util\Exception\NicknameEmptyException; use App\Util\Exception\NicknameEmptyException;
use App\Util\Exception\NicknameInvalidException; use App\Util\Exception\NicknameInvalidException;
use App\Util\Exception\NicknameNotAllowedException; use App\Util\Exception\NicknameNotAllowedException;
use App\Util\Exception\NicknameTakenException; use App\Util\Exception\NicknameTakenException;
use App\Util\Exception\NicknameTooLongException; use App\Util\Exception\NicknameTooLongException;
use App\Util\Exception\NoLoggedInUser;
use App\Util\Exception\ServerException; use App\Util\Exception\ServerException;
use App\Util\Nickname;
use Component\Group\Entity\LocalGroup; use Component\Group\Entity\LocalGroup;
use Misd\PhoneNumberBundle\Form\Type\PhoneNumberType; use Misd\PhoneNumberBundle\Form\Type\PhoneNumberType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\Extension\Core\Type\SubmitType;
@ -58,12 +59,13 @@ class ActorForms
/** /**
* Actor personal information panel * Actor personal information panel
* *
* @throws \App\Util\Exception\NicknameException
* @throws ClientException
* @throws NicknameEmptyException * @throws NicknameEmptyException
* @throws NicknameInvalidException * @throws NicknameInvalidException
* @throws NicknameNotAllowedException * @throws NicknameNotAllowedException
* @throws NicknameTakenException * @throws NicknameTakenException
* @throws NicknameTooLongException * @throws NicknameTooLongException
* @throws NoLoggedInUser
* @throws ServerException * @throws ServerException
*/ */
public static function personalInfo(Request $request, Actor $target, LocalUser|LocalGroup $user): mixed public static function personalInfo(Request $request, Actor $target, LocalUser|LocalGroup $user): mixed
@ -80,9 +82,15 @@ class ActorForms
]; ];
// Setting nickname normalised and setting actor cache // Setting nickname normalised and setting actor cache
$extra_step = function ($data, $extra_args) use ($user, $target) { $extra_step = static function ($data, $extra_args) use ($user, $target) {
if ($user->getNickname() !== $data['nickname']) { if (!strcmp($user->getNickname(), $data['nickname'])) {
$user->setNicknameSanitizedAndCached($data['nickname']); $data['nickname'] = Nickname::normalize($data['nickname'], check_already_used: false, which: Nickname::CHECK_LOCAL_GROUP, check_is_allowed: true);
}
if (!strcmp($target->getFullname(), $data['full_name'])) {
$data['full_name'] = trim($data['full_name']);
if (mb_strlen($data['full_name']) > 64) {
throw new ClientException('Fullname cannot be more than 64 character long.');
}
} }
$cache_keys = Actor::cacheKeys($target->getId()); $cache_keys = Actor::cacheKeys($target->getId());