From a52f67c78e6c1694f07dead358a321dbb3c48d76 Mon Sep 17 00:00:00 2001 From: aritz Date: Fri, 27 Jun 2025 10:43:40 +0200 Subject: [PATCH 01/13] Confirm user --- config/routing/admin_users.yaml | 8 +++++++ src/Controller/Admin/UsersController.php | 27 +++++++++++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/config/routing/admin_users.yaml b/config/routing/admin_users.yaml index 48f2ddc..1095d03 100644 --- a/config/routing/admin_users.yaml +++ b/config/routing/admin_users.yaml @@ -18,6 +18,14 @@ sfs_user_admin_users_delete: controller: sfs_user.admin.user.controller::delete path: /{user}/delete +sfs_user_admin_users_confirm: + controller: Softspring\UserBundle\Controller\Admin\UsersController::userConfirm + path: /{user}/confirm/{token} + +sfs_user_admin_users_unconfirm: + controller: Softspring\UserBundle\Controller\Admin\UsersController::userUnconfirm + path: /{user}/unconfirm + sfs_user_admin_users_resend_confirmation: controller: Softspring\UserBundle\Controller\Admin\UsersController::resendConfirmationEmail path: /{user}/resend diff --git a/src/Controller/Admin/UsersController.php b/src/Controller/Admin/UsersController.php index f426ef9..beea502 100644 --- a/src/Controller/Admin/UsersController.php +++ b/src/Controller/Admin/UsersController.php @@ -2,6 +2,7 @@ namespace Softspring\UserBundle\Controller\Admin; +use App\Entity\User; use Doctrine\ORM\EntityManagerInterface; use Exception; use Softspring\Component\Events\DispatchGetResponseTrait; @@ -12,6 +13,7 @@ use Softspring\UserBundle\Model\RolesAdminInterface; use Softspring\UserBundle\Model\UserInterface; use Softspring\UserBundle\SfsUserEvents; +use Softspring\UserBundle\Util\TokenGeneratorInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\HttpFoundation\Request; @@ -30,12 +32,15 @@ class UsersController extends AbstractController protected EventDispatcherInterface $eventDispatcher; - public function __construct(UserManagerInterface $userManager, EntityManagerInterface $em, ?UserMailerInterface $userMailer, EventDispatcherInterface $eventDispatcher) + protected TokenGeneratorInterface $tokenGenerator; + + public function __construct(UserManagerInterface $userManager, EntityManagerInterface $em, ?UserMailerInterface $userMailer, EventDispatcherInterface $eventDispatcher, TokenGeneratorInterface $tokenGenerator) { $this->userManager = $userManager; $this->em = $em; $this->userMailer = $userMailer; $this->eventDispatcher = $eventDispatcher; + $this->tokenGenerator = $tokenGenerator; } public function promoteAdmin(string $user, Request $request): Response @@ -84,6 +89,26 @@ public function usersPendingConfirmCountWidget(): Response ]); } + public function userConfirm(User $user, string $token): Response + { + if ($user->getConfirmationToken() === $token) { + $user->setConfirmationToken(null); + $user->setConfirmedAt(new \DateTime()); + $this->userManager->saveEntity($user); + } + + return $this->redirectToRoute('sfs_user_admin_users_details', ['user' => $user->getId()]); + } + + public function userUnconfirm(User $user): Response + { + $user->setConfirmationToken($this->tokenGenerator->generateToken()); + $user->setUnconfirmedAt(); + $this->userManager->saveEntity($user); + + return $this->redirectToRoute('sfs_user_admin_users_details', ['user' => $user->getId()]); + } + public function resendConfirmationEmail(string $user, Request $request): Response { /** @var ConfirmableInterface|UserInterface $user */ From 0ea7c9475db962eae97e0aaee4ee2e95578482ff Mon Sep 17 00:00:00 2001 From: aritz Date: Fri, 27 Jun 2025 11:05:41 +0200 Subject: [PATCH 02/13] Confirm user --- src/Controller/Admin/UsersController.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Controller/Admin/UsersController.php b/src/Controller/Admin/UsersController.php index beea502..01513dd 100644 --- a/src/Controller/Admin/UsersController.php +++ b/src/Controller/Admin/UsersController.php @@ -91,6 +91,8 @@ public function usersPendingConfirmCountWidget(): Response public function userConfirm(User $user, string $token): Response { + $this->denyAccessUnlessGranted('PERMISSION_SFS_USER_ADMIN_USERS_CONFIRM', $user); + if ($user->getConfirmationToken() === $token) { $user->setConfirmationToken(null); $user->setConfirmedAt(new \DateTime()); @@ -102,6 +104,8 @@ public function userConfirm(User $user, string $token): Response public function userUnconfirm(User $user): Response { + $this->denyAccessUnlessGranted('PERMISSION_SFS_USER_ADMIN_USERS_UNCONFIRM', $user); + $user->setConfirmationToken($this->tokenGenerator->generateToken()); $user->setUnconfirmedAt(); $this->userManager->saveEntity($user); From 44f988042350afe97d1b2e2d2de619b0f353b8b3 Mon Sep 17 00:00:00 2001 From: aritz Date: Fri, 27 Jun 2025 11:20:49 +0200 Subject: [PATCH 03/13] Confirm user --- config/security/admin_role_hierarchy.yaml | 6 +++++- src/Controller/Admin/UsersController.php | 2 +- src/Security/Voter/DeprecatedPermissionVoter.php | 2 ++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/config/security/admin_role_hierarchy.yaml b/config/security/admin_role_hierarchy.yaml index 567955d..dbe8f1a 100644 --- a/config/security/admin_role_hierarchy.yaml +++ b/config/security/admin_role_hierarchy.yaml @@ -63,4 +63,8 @@ security: PERMISSION_SFS_USER_ADMIN_INVITATIONS_DETAILS: - ROLE_ADMIN_INVITATIONS_DETAILS PERMISSION_SFS_USER_ADMIN_HISTORY_LIST: - - ROLE_ADMIN_ACCESS_HISTORY_LIST \ No newline at end of file + - ROLE_ADMIN_ACCESS_HISTORY_LIST + PERMISSION_SFS_USER_ADMIN_USERS_CONFIRM: + - ROLE_ADMIN_USERS_CONFIRM + PERMISSION_SFS_USER_ADMIN_USERS_UNCONFIRM: + - ROLE_ADMIN_USERS_UNCONFIRM \ No newline at end of file diff --git a/src/Controller/Admin/UsersController.php b/src/Controller/Admin/UsersController.php index 01513dd..ddd17be 100644 --- a/src/Controller/Admin/UsersController.php +++ b/src/Controller/Admin/UsersController.php @@ -2,7 +2,7 @@ namespace Softspring\UserBundle\Controller\Admin; -use App\Entity\User; +use Softspring\UserBundle\Model\User; use Doctrine\ORM\EntityManagerInterface; use Exception; use Softspring\Component\Events\DispatchGetResponseTrait; diff --git a/src/Security/Voter/DeprecatedPermissionVoter.php b/src/Security/Voter/DeprecatedPermissionVoter.php index 10695c7..401c24f 100644 --- a/src/Security/Voter/DeprecatedPermissionVoter.php +++ b/src/Security/Voter/DeprecatedPermissionVoter.php @@ -31,6 +31,8 @@ class DeprecatedPermissionVoter implements VoterInterface 'ROLE_ADMIN_INVITATIONS_LIST' => 'PERMISSION_SFS_USER_ADMIN_INVITATIONS_LIST', 'ROLE_ADMIN_INVITATIONS_DETAILS' => 'PERMISSION_SFS_USER_ADMIN_INVITATIONS_DETAILS', 'ROLE_ADMIN_ACCESS_HISTORY_LIST' => 'PERMISSION_SFS_USER_ADMIN_HISTORY_LIST', + 'ROLE_ADMIN_USERS_CONFIRM' => 'PERMISSION_SFS_USER_ADMIN_USERS_CONFIRM', + 'ROLE_ADMIN_USERS_UNCONFIRM' => 'PERMISSION_SFS_USER_ADMIN_USERS_UNCONFIRM', ]; public function vote(TokenInterface $token, mixed $subject, array $attributes): int From 9179373125d767bec470d916ab969664bcb2cf4f Mon Sep 17 00:00:00 2001 From: aritz Date: Fri, 27 Jun 2025 11:53:35 +0200 Subject: [PATCH 04/13] Confirm user --- src/Controller/Admin/UsersController.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Controller/Admin/UsersController.php b/src/Controller/Admin/UsersController.php index ddd17be..40b6744 100644 --- a/src/Controller/Admin/UsersController.php +++ b/src/Controller/Admin/UsersController.php @@ -96,6 +96,7 @@ public function userConfirm(User $user, string $token): Response if ($user->getConfirmationToken() === $token) { $user->setConfirmationToken(null); $user->setConfirmedAt(new \DateTime()); + $user->setEnabled(true); $this->userManager->saveEntity($user); } @@ -107,7 +108,8 @@ public function userUnconfirm(User $user): Response $this->denyAccessUnlessGranted('PERMISSION_SFS_USER_ADMIN_USERS_UNCONFIRM', $user); $user->setConfirmationToken($this->tokenGenerator->generateToken()); - $user->setUnconfirmedAt(); + $user->setConfirmedAt(); + $user->setEnabled(false); $this->userManager->saveEntity($user); return $this->redirectToRoute('sfs_user_admin_users_details', ['user' => $user->getId()]); From 63912171c2b30e614293796c611572c18d1be539 Mon Sep 17 00:00:00 2001 From: aritz Date: Fri, 27 Jun 2025 12:10:41 +0200 Subject: [PATCH 05/13] Confirm user --- config/security/admin_role_hierarchy.yaml | 2 ++ src/Controller/Admin/UsersController.php | 10 +++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/config/security/admin_role_hierarchy.yaml b/config/security/admin_role_hierarchy.yaml index dbe8f1a..fc52e4d 100644 --- a/config/security/admin_role_hierarchy.yaml +++ b/config/security/admin_role_hierarchy.yaml @@ -14,6 +14,8 @@ security: ROLE_SFS_USER_ADMIN_ADMINISTRATORS_RW: - ROLE_SFS_USER_ADMIN_ADMINISTRATORS_RO - PERMISSION_SFS_USER_ADMIN_USERS_PROMOTE + - PERMISSION_SFS_USER_ADMIN_USERS_CONFIRM + - PERMISSION_SFS_USER_ADMIN_USERS_UNCONFIRM - PERMISSION_SFS_USER_ADMIN_ADMINISTRATORS_DEMOTE - PERMISSION_SFS_USER_ADMIN_ADMINISTRATORS_UPDATE - PERMISSION_SFS_USER_ADMIN_ADMINISTRATORS_DELETE diff --git a/src/Controller/Admin/UsersController.php b/src/Controller/Admin/UsersController.php index 40b6744..3c8d13d 100644 --- a/src/Controller/Admin/UsersController.php +++ b/src/Controller/Admin/UsersController.php @@ -89,8 +89,10 @@ public function usersPendingConfirmCountWidget(): Response ]); } - public function userConfirm(User $user, string $token): Response + public function userConfirm(string $user, string $token): Response { + $user = $this->userManager->findUserBy(['id' => $user]); + $this->denyAccessUnlessGranted('PERMISSION_SFS_USER_ADMIN_USERS_CONFIRM', $user); if ($user->getConfirmationToken() === $token) { @@ -103,12 +105,14 @@ public function userConfirm(User $user, string $token): Response return $this->redirectToRoute('sfs_user_admin_users_details', ['user' => $user->getId()]); } - public function userUnconfirm(User $user): Response + public function userUnconfirm(string $user): Response { + $user = $this->userManager->findUserBy(['id' => $user]); + $this->denyAccessUnlessGranted('PERMISSION_SFS_USER_ADMIN_USERS_UNCONFIRM', $user); $user->setConfirmationToken($this->tokenGenerator->generateToken()); - $user->setConfirmedAt(); + $user->setConfirmedAt(null); $user->setEnabled(false); $this->userManager->saveEntity($user); From e92f84da1a567c4a15eace23e956c914f116d9c1 Mon Sep 17 00:00:00 2001 From: aritz Date: Mon, 30 Jun 2025 08:10:33 +0200 Subject: [PATCH 06/13] Confirm user --- config/routing/admin_users.yaml | 10 +++- config/security/admin_role_hierarchy.yaml | 8 ++- src/Controller/Admin/UsersController.php | 51 ++++++++++++++++--- .../Voter/DeprecatedPermissionVoter.php | 2 + translations/sfs_user.en.yaml | 3 ++ translations/sfs_user.es.yaml | 3 ++ 6 files changed, 68 insertions(+), 9 deletions(-) diff --git a/config/routing/admin_users.yaml b/config/routing/admin_users.yaml index 1095d03..36f694f 100644 --- a/config/routing/admin_users.yaml +++ b/config/routing/admin_users.yaml @@ -20,12 +20,20 @@ sfs_user_admin_users_delete: sfs_user_admin_users_confirm: controller: Softspring\UserBundle\Controller\Admin\UsersController::userConfirm - path: /{user}/confirm/{token} + path: /{user}/confirm sfs_user_admin_users_unconfirm: controller: Softspring\UserBundle\Controller\Admin\UsersController::userUnconfirm path: /{user}/unconfirm +sfs_user_admin_users_enable: + controller: Softspring\UserBundle\Controller\Admin\UsersController::userEnable + path: /{user}/enable + +sfs_user_admin_users_disable: + controller: Softspring\UserBundle\Controller\Admin\UsersController::userDisable + path: /{user}/disable + sfs_user_admin_users_resend_confirmation: controller: Softspring\UserBundle\Controller\Admin\UsersController::resendConfirmationEmail path: /{user}/resend diff --git a/config/security/admin_role_hierarchy.yaml b/config/security/admin_role_hierarchy.yaml index fc52e4d..4a99257 100644 --- a/config/security/admin_role_hierarchy.yaml +++ b/config/security/admin_role_hierarchy.yaml @@ -16,6 +16,8 @@ security: - PERMISSION_SFS_USER_ADMIN_USERS_PROMOTE - PERMISSION_SFS_USER_ADMIN_USERS_CONFIRM - PERMISSION_SFS_USER_ADMIN_USERS_UNCONFIRM + - PERMISSION_SFS_USER_ADMIN_USERS_ENABLE + - PERMISSION_SFS_USER_ADMIN_USERS_DISABLE - PERMISSION_SFS_USER_ADMIN_ADMINISTRATORS_DEMOTE - PERMISSION_SFS_USER_ADMIN_ADMINISTRATORS_UPDATE - PERMISSION_SFS_USER_ADMIN_ADMINISTRATORS_DELETE @@ -69,4 +71,8 @@ security: PERMISSION_SFS_USER_ADMIN_USERS_CONFIRM: - ROLE_ADMIN_USERS_CONFIRM PERMISSION_SFS_USER_ADMIN_USERS_UNCONFIRM: - - ROLE_ADMIN_USERS_UNCONFIRM \ No newline at end of file + - ROLE_ADMIN_USERS_UNCONFIRM + PERMISSION_SFS_USER_ADMIN_USERS_ENABLE: + - ROLE_ADMIN_USERS_ENABLE + PERMISSION_SFS_USER_ADMIN_USERS_DISABLE: + - ROLE_ADMIN_USERS_DISABLE \ No newline at end of file diff --git a/src/Controller/Admin/UsersController.php b/src/Controller/Admin/UsersController.php index 3c8d13d..b809e33 100644 --- a/src/Controller/Admin/UsersController.php +++ b/src/Controller/Admin/UsersController.php @@ -2,7 +2,6 @@ namespace Softspring\UserBundle\Controller\Admin; -use Softspring\UserBundle\Model\User; use Doctrine\ORM\EntityManagerInterface; use Exception; use Softspring\Component\Events\DispatchGetResponseTrait; @@ -10,6 +9,7 @@ use Softspring\UserBundle\Mailer\UserMailerInterface; use Softspring\UserBundle\Manager\UserManagerInterface; use Softspring\UserBundle\Model\ConfirmableInterface; +use Softspring\UserBundle\Model\EnablableInterface; use Softspring\UserBundle\Model\RolesAdminInterface; use Softspring\UserBundle\Model\UserInterface; use Softspring\UserBundle\SfsUserEvents; @@ -89,19 +89,20 @@ public function usersPendingConfirmCountWidget(): Response ]); } - public function userConfirm(string $user, string $token): Response + public function userConfirm(string $user): Response { $user = $this->userManager->findUserBy(['id' => $user]); $this->denyAccessUnlessGranted('PERMISSION_SFS_USER_ADMIN_USERS_CONFIRM', $user); - if ($user->getConfirmationToken() === $token) { - $user->setConfirmationToken(null); - $user->setConfirmedAt(new \DateTime()); - $user->setEnabled(true); - $this->userManager->saveEntity($user); + if (!$user instanceof ConfirmableInterface) { + throw new Exception(sprintf('User %s class must implement %s to confirm', get_class($user), ConfirmableInterface::class)); } + $user->setConfirmationToken(null); + $user->setConfirmedAt(new \DateTime()); + $this->userManager->saveEntity($user); + return $this->redirectToRoute('sfs_user_admin_users_details', ['user' => $user->getId()]); } @@ -111,8 +112,44 @@ public function userUnconfirm(string $user): Response $this->denyAccessUnlessGranted('PERMISSION_SFS_USER_ADMIN_USERS_UNCONFIRM', $user); + if (!$user instanceof ConfirmableInterface) { + throw new Exception(sprintf('User %s class must implement %s to confirm', get_class($user), ConfirmableInterface::class)); + } + $user->setConfirmationToken($this->tokenGenerator->generateToken()); $user->setConfirmedAt(null); + $this->userManager->saveEntity($user); + + return $this->redirectToRoute('sfs_user_admin_users_details', ['user' => $user->getId()]); + } + + + public function userEnable(string $user): Response + { + $user = $this->userManager->findUserBy(['id' => $user]); + + $this->denyAccessUnlessGranted('PERMISSION_SFS_USER_ADMIN_USERS_ENABLE', $user); + + if (!$user instanceof EnablableInterface) { + throw new Exception(sprintf('User %s class must implement %s to enable', get_class($user), EnablableInterface::class)); + } + + $user->setEnabled(true); + $this->userManager->saveEntity($user); + + return $this->redirectToRoute('sfs_user_admin_users_details', ['user' => $user->getId()]); + } + + public function userDisable(string $user): Response + { + $user = $this->userManager->findUserBy(['id' => $user]); + + $this->denyAccessUnlessGranted('PERMISSION_SFS_USER_ADMIN_USERS_DISABLE', $user); + + if (!$user instanceof EnablableInterface) { + throw new Exception(sprintf('User %s class must implement %s to enable', get_class($user), EnablableInterface::class)); + } + $user->setEnabled(false); $this->userManager->saveEntity($user); diff --git a/src/Security/Voter/DeprecatedPermissionVoter.php b/src/Security/Voter/DeprecatedPermissionVoter.php index 401c24f..3e5de2f 100644 --- a/src/Security/Voter/DeprecatedPermissionVoter.php +++ b/src/Security/Voter/DeprecatedPermissionVoter.php @@ -33,6 +33,8 @@ class DeprecatedPermissionVoter implements VoterInterface 'ROLE_ADMIN_ACCESS_HISTORY_LIST' => 'PERMISSION_SFS_USER_ADMIN_HISTORY_LIST', 'ROLE_ADMIN_USERS_CONFIRM' => 'PERMISSION_SFS_USER_ADMIN_USERS_CONFIRM', 'ROLE_ADMIN_USERS_UNCONFIRM' => 'PERMISSION_SFS_USER_ADMIN_USERS_UNCONFIRM', + 'ROLE_ADMIN_USERS_ENABLE' => 'PERMISSION_SFS_USER_ADMIN_USERS_ENABLE', + 'ROLE_ADMIN_USERS_DISABLE' => 'PERMISSION_SFS_USER_ADMIN_USERS_DISABLE', ]; public function vote(TokenInterface $token, mixed $subject, array $attributes): int diff --git a/translations/sfs_user.en.yaml b/translations/sfs_user.en.yaml index 246631d..6854ca2 100644 --- a/translations/sfs_user.en.yaml +++ b/translations/sfs_user.en.yaml @@ -160,10 +160,13 @@ admin_users: unconfirm: "Unconfirm" confirm: "Confirm" resend_confirm: "Resend confirm" + enable: "Enable" + disable: "Disable" fields: username: "Username" email: "Email" confirmed: "Confirmation" + enabled: "Enabled" lastLogin: "Last access" lastLogin.notYet: "not yet" role: "Role" diff --git a/translations/sfs_user.es.yaml b/translations/sfs_user.es.yaml index 8640fa2..1760e0b 100644 --- a/translations/sfs_user.es.yaml +++ b/translations/sfs_user.es.yaml @@ -160,10 +160,13 @@ admin_users: unconfirm: "Desconfirmar manualmente" confirm: "Confirmar manualmente" resend_confirm: "Reenviar confirmación" + enable: "Habilitar" + disable: "Deshabilitar" fields: username: "Nombre de usuario" email: "Email" confirmed: "Confirmado" + enabled: "Habilitado" lastLogin: "Último acceso" lastLogin.notYet: "aún no ha accedido" role: "Rol" From dc4bef596727d374022cb81d3c34f4a10502ad45 Mon Sep 17 00:00:00 2001 From: aritz Date: Mon, 30 Jun 2025 08:44:05 +0200 Subject: [PATCH 07/13] Confirm user --- config/security/admin_role_hierarchy.yaml | 18 +++++------------- src/Controller/Admin/UsersController.php | 5 +++++ .../Voter/DeprecatedPermissionVoter.php | 4 ---- 3 files changed, 10 insertions(+), 17 deletions(-) diff --git a/config/security/admin_role_hierarchy.yaml b/config/security/admin_role_hierarchy.yaml index 4a99257..4836930 100644 --- a/config/security/admin_role_hierarchy.yaml +++ b/config/security/admin_role_hierarchy.yaml @@ -8,16 +8,16 @@ security: - PERMISSION_SFS_USER_ADMIN_USERS_DELETE - PERMISSION_SFS_USER_ADMIN_USERS_UPDATE - PERMISSION_SFS_USER_ADMIN_HISTORY_LIST + - PERMISSION_SFS_USER_ADMIN_USERS_CONFIRM + - PERMISSION_SFS_USER_ADMIN_USERS_UNCONFIRM + - PERMISSION_SFS_USER_ADMIN_USERS_ENABLE + - PERMISSION_SFS_USER_ADMIN_USERS_DISABLE ROLE_SFS_USER_ADMIN_ADMINISTRATORS_RO: - PERMISSION_SFS_USER_ADMIN_ADMINISTRATORS_LIST - PERMISSION_SFS_USER_ADMIN_ADMINISTRATORS_DETAILS ROLE_SFS_USER_ADMIN_ADMINISTRATORS_RW: - ROLE_SFS_USER_ADMIN_ADMINISTRATORS_RO - PERMISSION_SFS_USER_ADMIN_USERS_PROMOTE - - PERMISSION_SFS_USER_ADMIN_USERS_CONFIRM - - PERMISSION_SFS_USER_ADMIN_USERS_UNCONFIRM - - PERMISSION_SFS_USER_ADMIN_USERS_ENABLE - - PERMISSION_SFS_USER_ADMIN_USERS_DISABLE - PERMISSION_SFS_USER_ADMIN_ADMINISTRATORS_DEMOTE - PERMISSION_SFS_USER_ADMIN_ADMINISTRATORS_UPDATE - PERMISSION_SFS_USER_ADMIN_ADMINISTRATORS_DELETE @@ -67,12 +67,4 @@ security: PERMISSION_SFS_USER_ADMIN_INVITATIONS_DETAILS: - ROLE_ADMIN_INVITATIONS_DETAILS PERMISSION_SFS_USER_ADMIN_HISTORY_LIST: - - ROLE_ADMIN_ACCESS_HISTORY_LIST - PERMISSION_SFS_USER_ADMIN_USERS_CONFIRM: - - ROLE_ADMIN_USERS_CONFIRM - PERMISSION_SFS_USER_ADMIN_USERS_UNCONFIRM: - - ROLE_ADMIN_USERS_UNCONFIRM - PERMISSION_SFS_USER_ADMIN_USERS_ENABLE: - - ROLE_ADMIN_USERS_ENABLE - PERMISSION_SFS_USER_ADMIN_USERS_DISABLE: - - ROLE_ADMIN_USERS_DISABLE \ No newline at end of file + - ROLE_ADMIN_ACCESS_HISTORY_LIST \ No newline at end of file diff --git a/src/Controller/Admin/UsersController.php b/src/Controller/Admin/UsersController.php index b809e33..233becc 100644 --- a/src/Controller/Admin/UsersController.php +++ b/src/Controller/Admin/UsersController.php @@ -11,6 +11,7 @@ use Softspring\UserBundle\Model\ConfirmableInterface; use Softspring\UserBundle\Model\EnablableInterface; use Softspring\UserBundle\Model\RolesAdminInterface; +use Softspring\UserBundle\Model\User; use Softspring\UserBundle\Model\UserInterface; use Softspring\UserBundle\SfsUserEvents; use Softspring\UserBundle\Util\TokenGeneratorInterface; @@ -91,6 +92,7 @@ public function usersPendingConfirmCountWidget(): Response public function userConfirm(string $user): Response { + /** @var User|ConfirmableInterface $user */ $user = $this->userManager->findUserBy(['id' => $user]); $this->denyAccessUnlessGranted('PERMISSION_SFS_USER_ADMIN_USERS_CONFIRM', $user); @@ -108,6 +110,7 @@ public function userConfirm(string $user): Response public function userUnconfirm(string $user): Response { + /** @var User|ConfirmableInterface $user */ $user = $this->userManager->findUserBy(['id' => $user]); $this->denyAccessUnlessGranted('PERMISSION_SFS_USER_ADMIN_USERS_UNCONFIRM', $user); @@ -126,6 +129,7 @@ public function userUnconfirm(string $user): Response public function userEnable(string $user): Response { + /** @var User|ConfirmableInterface $user */ $user = $this->userManager->findUserBy(['id' => $user]); $this->denyAccessUnlessGranted('PERMISSION_SFS_USER_ADMIN_USERS_ENABLE', $user); @@ -142,6 +146,7 @@ public function userEnable(string $user): Response public function userDisable(string $user): Response { + /** @var User|ConfirmableInterface $user */ $user = $this->userManager->findUserBy(['id' => $user]); $this->denyAccessUnlessGranted('PERMISSION_SFS_USER_ADMIN_USERS_DISABLE', $user); diff --git a/src/Security/Voter/DeprecatedPermissionVoter.php b/src/Security/Voter/DeprecatedPermissionVoter.php index 3e5de2f..10695c7 100644 --- a/src/Security/Voter/DeprecatedPermissionVoter.php +++ b/src/Security/Voter/DeprecatedPermissionVoter.php @@ -31,10 +31,6 @@ class DeprecatedPermissionVoter implements VoterInterface 'ROLE_ADMIN_INVITATIONS_LIST' => 'PERMISSION_SFS_USER_ADMIN_INVITATIONS_LIST', 'ROLE_ADMIN_INVITATIONS_DETAILS' => 'PERMISSION_SFS_USER_ADMIN_INVITATIONS_DETAILS', 'ROLE_ADMIN_ACCESS_HISTORY_LIST' => 'PERMISSION_SFS_USER_ADMIN_HISTORY_LIST', - 'ROLE_ADMIN_USERS_CONFIRM' => 'PERMISSION_SFS_USER_ADMIN_USERS_CONFIRM', - 'ROLE_ADMIN_USERS_UNCONFIRM' => 'PERMISSION_SFS_USER_ADMIN_USERS_UNCONFIRM', - 'ROLE_ADMIN_USERS_ENABLE' => 'PERMISSION_SFS_USER_ADMIN_USERS_ENABLE', - 'ROLE_ADMIN_USERS_DISABLE' => 'PERMISSION_SFS_USER_ADMIN_USERS_DISABLE', ]; public function vote(TokenInterface $token, mixed $subject, array $attributes): int From a5937115c5f5d943dc587138a52ab0905bc36c8b Mon Sep 17 00:00:00 2001 From: aritz Date: Mon, 30 Jun 2025 08:46:34 +0200 Subject: [PATCH 08/13] Confirm user --- src/Controller/Admin/UsersController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Controller/Admin/UsersController.php b/src/Controller/Admin/UsersController.php index 233becc..dc82364 100644 --- a/src/Controller/Admin/UsersController.php +++ b/src/Controller/Admin/UsersController.php @@ -129,7 +129,7 @@ public function userUnconfirm(string $user): Response public function userEnable(string $user): Response { - /** @var User|ConfirmableInterface $user */ + /** @var User|EnablableInterface $user */ $user = $this->userManager->findUserBy(['id' => $user]); $this->denyAccessUnlessGranted('PERMISSION_SFS_USER_ADMIN_USERS_ENABLE', $user); @@ -146,7 +146,7 @@ public function userEnable(string $user): Response public function userDisable(string $user): Response { - /** @var User|ConfirmableInterface $user */ + /** @var User|EnablableInterface $user */ $user = $this->userManager->findUserBy(['id' => $user]); $this->denyAccessUnlessGranted('PERMISSION_SFS_USER_ADMIN_USERS_DISABLE', $user); From d654bfbafa5b15e60b734e60f862968240c6168c Mon Sep 17 00:00:00 2001 From: aritz Date: Mon, 30 Jun 2025 09:05:00 +0200 Subject: [PATCH 09/13] Confirm user --- src/Controller/Admin/UsersController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Controller/Admin/UsersController.php b/src/Controller/Admin/UsersController.php index dc82364..f42b9bd 100644 --- a/src/Controller/Admin/UsersController.php +++ b/src/Controller/Admin/UsersController.php @@ -92,12 +92,12 @@ public function usersPendingConfirmCountWidget(): Response public function userConfirm(string $user): Response { - /** @var User|ConfirmableInterface $user */ + /** @var UserInterface|ConfirmableInterface $user */ $user = $this->userManager->findUserBy(['id' => $user]); $this->denyAccessUnlessGranted('PERMISSION_SFS_USER_ADMIN_USERS_CONFIRM', $user); - if (!$user instanceof ConfirmableInterface) { + if (!$user instanceof UserInterface || !$user instanceof ConfirmableInterface) { throw new Exception(sprintf('User %s class must implement %s to confirm', get_class($user), ConfirmableInterface::class)); } From 3f669a8ad93097046c22e3fa3efe76bd93fd442c Mon Sep 17 00:00:00 2001 From: aritz Date: Mon, 30 Jun 2025 09:08:58 +0200 Subject: [PATCH 10/13] Confirm user --- src/Controller/Admin/UsersController.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Controller/Admin/UsersController.php b/src/Controller/Admin/UsersController.php index f42b9bd..0da3b8c 100644 --- a/src/Controller/Admin/UsersController.php +++ b/src/Controller/Admin/UsersController.php @@ -92,7 +92,7 @@ public function usersPendingConfirmCountWidget(): Response public function userConfirm(string $user): Response { - /** @var UserInterface|ConfirmableInterface $user */ + /** @var User|ConfirmableInterface $user */ $user = $this->userManager->findUserBy(['id' => $user]); $this->denyAccessUnlessGranted('PERMISSION_SFS_USER_ADMIN_USERS_CONFIRM', $user); @@ -115,7 +115,7 @@ public function userUnconfirm(string $user): Response $this->denyAccessUnlessGranted('PERMISSION_SFS_USER_ADMIN_USERS_UNCONFIRM', $user); - if (!$user instanceof ConfirmableInterface) { + if (!$user instanceof UserInterface || !$user instanceof ConfirmableInterface) { throw new Exception(sprintf('User %s class must implement %s to confirm', get_class($user), ConfirmableInterface::class)); } @@ -134,7 +134,7 @@ public function userEnable(string $user): Response $this->denyAccessUnlessGranted('PERMISSION_SFS_USER_ADMIN_USERS_ENABLE', $user); - if (!$user instanceof EnablableInterface) { + if (!$user instanceof UserInterface || !$user instanceof EnablableInterface) { throw new Exception(sprintf('User %s class must implement %s to enable', get_class($user), EnablableInterface::class)); } @@ -151,7 +151,7 @@ public function userDisable(string $user): Response $this->denyAccessUnlessGranted('PERMISSION_SFS_USER_ADMIN_USERS_DISABLE', $user); - if (!$user instanceof EnablableInterface) { + if (!$user instanceof UserInterface || !$user instanceof EnablableInterface) { throw new Exception(sprintf('User %s class must implement %s to enable', get_class($user), EnablableInterface::class)); } From 3cd6f88d78fdac14bd69736cfbefd0df3c8a045f Mon Sep 17 00:00:00 2001 From: aritz Date: Mon, 30 Jun 2025 09:10:54 +0200 Subject: [PATCH 11/13] Confirm user --- src/Controller/Admin/UsersController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Controller/Admin/UsersController.php b/src/Controller/Admin/UsersController.php index 0da3b8c..e3d5048 100644 --- a/src/Controller/Admin/UsersController.php +++ b/src/Controller/Admin/UsersController.php @@ -92,7 +92,7 @@ public function usersPendingConfirmCountWidget(): Response public function userConfirm(string $user): Response { - /** @var User|ConfirmableInterface $user */ + /** @var User $user */ $user = $this->userManager->findUserBy(['id' => $user]); $this->denyAccessUnlessGranted('PERMISSION_SFS_USER_ADMIN_USERS_CONFIRM', $user); From e7535001bfe8dcadb81be8bb0ebd1ae1c0d5a521 Mon Sep 17 00:00:00 2001 From: aritz Date: Mon, 30 Jun 2025 09:12:04 +0200 Subject: [PATCH 12/13] Confirm user --- src/Controller/Admin/UsersController.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Controller/Admin/UsersController.php b/src/Controller/Admin/UsersController.php index e3d5048..d09c609 100644 --- a/src/Controller/Admin/UsersController.php +++ b/src/Controller/Admin/UsersController.php @@ -110,7 +110,7 @@ public function userConfirm(string $user): Response public function userUnconfirm(string $user): Response { - /** @var User|ConfirmableInterface $user */ + /** @var User $user */ $user = $this->userManager->findUserBy(['id' => $user]); $this->denyAccessUnlessGranted('PERMISSION_SFS_USER_ADMIN_USERS_UNCONFIRM', $user); @@ -129,7 +129,7 @@ public function userUnconfirm(string $user): Response public function userEnable(string $user): Response { - /** @var User|EnablableInterface $user */ + /** @var User $user */ $user = $this->userManager->findUserBy(['id' => $user]); $this->denyAccessUnlessGranted('PERMISSION_SFS_USER_ADMIN_USERS_ENABLE', $user); @@ -146,7 +146,7 @@ public function userEnable(string $user): Response public function userDisable(string $user): Response { - /** @var User|EnablableInterface $user */ + /** @var User $user */ $user = $this->userManager->findUserBy(['id' => $user]); $this->denyAccessUnlessGranted('PERMISSION_SFS_USER_ADMIN_USERS_DISABLE', $user); From efa051b3f608a47e4e003586c3c9e9cb8c09edf1 Mon Sep 17 00:00:00 2001 From: aritz Date: Mon, 30 Jun 2025 09:15:54 +0200 Subject: [PATCH 13/13] Confirm user --- src/Controller/Admin/UsersController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Controller/Admin/UsersController.php b/src/Controller/Admin/UsersController.php index d09c609..af93022 100644 --- a/src/Controller/Admin/UsersController.php +++ b/src/Controller/Admin/UsersController.php @@ -2,6 +2,7 @@ namespace Softspring\UserBundle\Controller\Admin; +use DateTime; use Doctrine\ORM\EntityManagerInterface; use Exception; use Softspring\Component\Events\DispatchGetResponseTrait; @@ -102,7 +103,7 @@ public function userConfirm(string $user): Response } $user->setConfirmationToken(null); - $user->setConfirmedAt(new \DateTime()); + $user->setConfirmedAt(new DateTime()); $this->userManager->saveEntity($user); return $this->redirectToRoute('sfs_user_admin_users_details', ['user' => $user->getId()]); @@ -126,7 +127,6 @@ public function userUnconfirm(string $user): Response return $this->redirectToRoute('sfs_user_admin_users_details', ['user' => $user->getId()]); } - public function userEnable(string $user): Response { /** @var User $user */