Update user handle generation

This commit is contained in:
2025-02-24 14:56:05 +01:00
parent d8aaaea353
commit 390ea14de6
2 changed files with 23 additions and 3 deletions
+3 -3
View File
@@ -44,9 +44,9 @@ class UsersPump extends AbstractPump
private function buildHandle(array $record): string
{
$handle = UserService::asHandle($record['id']);
if ($handle === null) {
try {
$handle = UserService::asHandle($record['id']);
} catch (\Exception $e) {
$handle = UserService::asHandle($record['email']);
}
+20
View File
@@ -8,6 +8,8 @@ use App\ApiResource\User\UserApiResource;
use App\Dto\UserSignupDto;
use App\Entity\User\User;
use App\Mapping\AutoMapper;
use App\Repository\User\UserRepository;
use App\Service\UserService;
use App\State\EntityStateProcessor;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
@@ -16,6 +18,7 @@ final class UserSignupProcessor implements ProcessorInterface
public function __construct(
private AutoMapper $autoMapper,
private EntityStateProcessor $entityStateProcessor,
private UserRepository $userRepository,
private UserPasswordHasherInterface $userPasswordHasher,
) {}
@@ -28,9 +31,26 @@ final class UserSignupProcessor implements ProcessorInterface
{
/** @var User */
$user = $this->autoMapper->map($data, User::class);
$user->setHandle($this->buildHandle($data));
$user->setPassword($this->userPasswordHasher->hashPassword($user, $data->password));
$user = $this->entityStateProcessor->process($user, $operation, $uriVariables, $context);
return $this->autoMapper->map($user, UserApiResource::class);
}
private function buildHandle(UserSignupDto $data): string
{
$base = UserService::asHandle($data->email);
$users = $this->userRepository->findLike($base);
$usersCount = \count($users);
if ($usersCount < 1) {
return $base;
}
return \sprintf('%s_%02d', $base, $usersCount + 1);
}
}