Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/Controller/User/Admin/DisableUserController.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public function __invoke(#[CurrentUser] User $currentUser, User $user): Response
throw $this->createAccessDeniedException();
}

$this->messageBus->dispatch(new DisableUser($user));
$this->messageBus->dispatch(new DisableUser($user->getId()));

$this->addFlash(
'success',
Expand Down
2 changes: 1 addition & 1 deletion src/Controller/User/Admin/EnableUserController.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public function __invoke(#[CurrentUser] User $currentUser, User $user): Response
throw $this->createAccessDeniedException();
}

$this->messageBus->dispatch(new EnableUser($user));
$this->messageBus->dispatch(new EnableUser($user->getId()));

$this->addFlash(
'success',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public function __invoke(User $user, Request $request): Response
return $this->redirectToRoute('user_admin_edit', ['user' => $user->getId()]);
}

$this->messageBus->dispatch(new SendConfirmation($user, $request->getLocale()));
$this->messageBus->dispatch(new SendConfirmation($user->getId(), $request->getLocale()));

$this->addFlash(
'success',
Expand Down
4 changes: 2 additions & 2 deletions src/Controller/User/ConfirmController.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@ public function __invoke(string $token, Request $request): Response
return $this->redirectToRoute('login');
}

$confirmForm = $this->createForm(ConfirmType::class, new ConfirmUser($user));
$confirmForm = $this->createForm(ConfirmType::class, new ConfirmUser($user->getId()));
$confirmForm->handleRequest($request);

if ($confirmForm->isSubmitted() && $confirmForm->isValid()) {
$this->messageBus->dispatch(new ConfirmUser($user));
$this->messageBus->dispatch(new ConfirmUser($user->getId()));

$this->addFlash(
'success',
Expand Down
2 changes: 1 addition & 1 deletion src/Controller/User/ProfileController.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public function __construct(
#[Breadcrumb('user_profile')]
public function __invoke(Request $request, #[CurrentUser] User $user): Response
{
$form = $this->createForm(ChangePasswordType::class, new ChangePassword($user));
$form = $this->createForm(ChangePasswordType::class, new ChangePassword($user->getId()));

$form->handleRequest($request);

Expand Down
2 changes: 1 addition & 1 deletion src/Controller/User/ResendConfirmationController.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public function __invoke(string $token, Request $request): Response
return $this->redirectToRoute('login');
}

$this->messageBus->dispatch(new SendConfirmation($user, $request->getLocale()));
$this->messageBus->dispatch(new SendConfirmation($user->getId(), $request->getLocale()));

$this->addFlash('success', $this->translator->trans('Confirmation mail successfully resent'));

Expand Down
2 changes: 1 addition & 1 deletion src/Controller/User/ResetPasswordController.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public function __invoke(string $token, Request $request): Response
return $this->redirectToRoute('user_forgot_password');
}

$form = $this->createForm(ResetPasswordType::class, new ResetPassword($user));
$form = $this->createForm(ResetPasswordType::class, new ResetPassword($user->getId()));

$form->handleRequest($request);

Expand Down
15 changes: 15 additions & 0 deletions src/Exception/User/UserNotFoundException.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php

namespace App\Exception\User;

use RuntimeException;

class UserNotFoundException extends RuntimeException
{
public static function create(int $id): self
{
return new self(
'User entity with id: ' . $id . ' was not found',
);
}
}
3 changes: 1 addition & 2 deletions src/Message/User/ChangePassword.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

namespace App\Message\User;

use App\Entity\User\User;
use Symfony\Component\Validator\Constraints\NotBlank;

class ChangePassword
Expand All @@ -11,7 +10,7 @@ class ChangePassword
public string $password;

public function __construct(
public readonly User $user
public readonly int $userId
) {
}
}
6 changes: 2 additions & 4 deletions src/Message/User/ConfirmUser.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,10 @@

namespace App\Message\User;

use App\Entity\User\User;

class ConfirmUser
readonly class ConfirmUser
{
public function __construct(
public readonly User $user
public int $userId
) {
}
}
6 changes: 2 additions & 4 deletions src/Message/User/DisableUser.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,10 @@

namespace App\Message\User;

use App\Entity\User\User;

class DisableUser
readonly class DisableUser
{
public function __construct(
public readonly User $user
public int $userId
) {
}
}
6 changes: 2 additions & 4 deletions src/Message/User/EnableUser.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,10 @@

namespace App\Message\User;

use App\Entity\User\User;

class EnableUser
readonly class EnableUser
{
public function __construct(
public readonly User $user
public int $userId
) {
}
}
3 changes: 1 addition & 2 deletions src/Message/User/ResetPassword.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

namespace App\Message\User;

use App\Entity\User\User;
use Symfony\Component\Validator\Constraints as Assert;

class ResetPassword
Expand All @@ -15,7 +14,7 @@ class ResetPassword
public string $password;

public function __construct(
public readonly User $user
public readonly int $userId
) {
}
}
8 changes: 3 additions & 5 deletions src/Message/User/SendConfirmation.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,11 @@

namespace App\Message\User;

use App\Entity\User\User;

class SendConfirmation
readonly class SendConfirmation
{
public function __construct(
public readonly User $user,
public readonly string $locale
public int $userId,
public string $locale
) {
}
}
5 changes: 4 additions & 1 deletion src/Message/User/UpdateUser.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,12 @@

class UpdateUser extends UserDataTransferObject
{
public readonly int $userId;

public function __construct(
public readonly User $user
User $user
) {
$this->userId = $user->getId();
$this->email = $user->getEmail();
$this->roles = $user->getRoles();
}
Expand Down
9 changes: 7 additions & 2 deletions src/MessageHandler/User/ChangePasswordHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace App\MessageHandler\User;

use App\Exception\User\UserNotFoundException;
use App\Message\User\ChangePassword;
use App\Repository\User\UserRepository;
use Symfony\Component\Messenger\Attribute\AsMessageHandler;
Expand All @@ -18,8 +19,12 @@ public function __construct(

public function __invoke(ChangePassword $message): void
{
$encodedPassword = $this->passwordEncoder->hashPassword($message->user, $message->password);
$message->user->setPassword($encodedPassword);
$user = $this->userRepository->find($message->userId);
if ($user === null) {
throw UserNotFoundException::create($message->userId);
}
$encodedPassword = $this->passwordEncoder->hashPassword($user, $message->password);
$user->setPassword($encodedPassword);
$this->userRepository->save();
}
}
7 changes: 6 additions & 1 deletion src/MessageHandler/User/ConfirmUserHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace App\MessageHandler\User;

use App\Exception\User\UserNotFoundException;
use App\Message\User\ConfirmUser;
use App\Repository\User\UserRepository;
use Symfony\Component\Messenger\Attribute\AsMessageHandler;
Expand All @@ -16,7 +17,11 @@ public function __construct(

public function __invoke(ConfirmUser $message): void
{
$message->user->confirm();
$user = $this->userRepository->find($message->userId);
if ($user === null) {
throw UserNotFoundException::create($message->userId);
}
$user->confirm();
$this->userRepository->save();
}
}
2 changes: 1 addition & 1 deletion src/MessageHandler/User/CreateUserHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public function __invoke(CreateUser $message): User
);
$user->requestPassword();
$this->userRepository->add($user);
$this->messageBus->dispatch(new SendConfirmation($user, $message->locale));
$this->messageBus->dispatch(new SendConfirmation($user->getId(), $message->locale));

return $user;
}
Expand Down
7 changes: 6 additions & 1 deletion src/MessageHandler/User/DisableUserHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace App\MessageHandler\User;

use App\Exception\User\UserNotFoundException;
use App\Message\User\DisableUser;
use App\Repository\User\UserRepository;
use Symfony\Component\Messenger\Attribute\AsMessageHandler;
Expand All @@ -16,7 +17,11 @@ public function __construct(

public function __invoke(DisableUser $message): void
{
$message->user->disable();
$user = $this->userRepository->find($message->userId);
if ($user === null) {
throw UserNotFoundException::create($message->userId);
}
$user->disable();
$this->userRepository->save();
}
}
7 changes: 6 additions & 1 deletion src/MessageHandler/User/EnableUserHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace App\MessageHandler\User;

use App\Exception\User\UserNotFoundException;
use App\Message\User\EnableUser;
use App\Repository\User\UserRepository;
use Symfony\Component\Messenger\Attribute\AsMessageHandler;
Expand All @@ -16,7 +17,11 @@ public function __construct(

public function __invoke(EnableUser $message): void
{
$message->user->enable();
$user = $this->userRepository->find($message->userId);
if ($user === null) {
throw UserNotFoundException::create($message->userId);
}
$user->enable();
$this->userRepository->save();
}
}
2 changes: 1 addition & 1 deletion src/MessageHandler/User/RegisterUserHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,6 @@ public function __invoke(RegisterUser $message): void
$encodedPassword = $this->passwordEncoder->hashPassword($user, $message->password);
$user->setPassword($encodedPassword);
$this->userRepository->add($user);
$this->messageBus->dispatch(new SendConfirmation($user, $message->locale));
$this->messageBus->dispatch(new SendConfirmation($user->getId(), $message->locale));
}
}
9 changes: 7 additions & 2 deletions src/MessageHandler/User/ResetPasswordHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace App\MessageHandler\User;

use App\Exception\User\UserNotFoundException;
use App\Message\User\ResetPassword;
use App\Repository\User\UserRepository;
use Symfony\Component\Messenger\Attribute\AsMessageHandler;
Expand All @@ -18,8 +19,12 @@ public function __construct(

public function __invoke(ResetPassword $message): void
{
$encodedPassword = $this->passwordEncoder->hashPassword($message->user, $message->password);
$message->user->setPassword($encodedPassword);
$user = $this->userRepository->find($message->userId);
if ($user === null) {
throw UserNotFoundException::create($message->userId);
}
$encodedPassword = $this->passwordEncoder->hashPassword($user, $message->password);
$user->setPassword($encodedPassword);
$this->userRepository->save();
}
}
12 changes: 6 additions & 6 deletions src/MessageHandler/User/SendConfirmationHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

namespace App\MessageHandler\User;

use App\Controller\User\ConfirmController;
use App\Entity\User\User;
use App\Exception\User\UserNotFoundException;
use App\Message\User\SendConfirmation;
use App\Repository\User\UserRepository;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
Expand All @@ -30,9 +29,12 @@ public function __construct(
$this->from = Address::create($from);
}

public function __invoke(SendConfirmation $message): User
public function __invoke(SendConfirmation $message): void
{
$user = $message->user;
$user = $this->userRepository->find($message->userId);
if ($user === null) {
throw UserNotFoundException::create($message->userId);
}
$user->requestConfirmation();
$this->userRepository->save();

Expand All @@ -53,7 +55,5 @@ public function __invoke(SendConfirmation $message): User

]);
$this->mailer->send($email);

return $user;
}
}
7 changes: 6 additions & 1 deletion src/MessageHandler/User/UpdateUserHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace App\MessageHandler\User;

use App\Exception\User\UserNotFoundException;
use App\Message\User\UpdateUser;
use App\Repository\User\UserRepository;
use Symfony\Component\Messenger\Attribute\AsMessageHandler;
Expand All @@ -16,7 +17,11 @@ public function __construct(

public function __invoke(UpdateUser $message): void
{
$message->user->update(
$user = $this->userRepository->find($message->userId);
if ($user === null) {
throw UserNotFoundException::create($message->userId);
}
$user->update(
$message->email,
$message->roles
);
Expand Down
2 changes: 1 addition & 1 deletion src/Validator/User/UniqueEmailValidator.php
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public function validate(mixed $value, Constraint $constraint): void
if (
$formData instanceof UpdateUser
&& $userWithThatEmail instanceof User
&& $formData->user->getId() !== $userWithThatEmail->getId()
&& $formData->userId !== $userWithThatEmail->getId()
) {
$this->context->buildViolation($constraint->message)
->setParameter('%email%', $value)
Expand Down
2 changes: 1 addition & 1 deletion tests/MessageHandler/User/ChangePasswordHandlerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ private function changePassword(): void
$user = new User('user@example.com', ['ROLE_USER']);
$this->userRepository->add($user);

$message = new ChangePassword($user);
$message = new ChangePassword($user->getId());
$message->password = 'new_password';

$handler = new ChangePasswordHandler(
Expand Down
Loading