From 0405190926be466bf90398b01050ce00789da6e2 Mon Sep 17 00:00:00 2001 From: Hicham Taoufikallah Date: Sun, 23 Aug 2020 02:19:18 +0100 Subject: [PATCH 1/2] add anonymous users support --- src/Action/RegisterSubscriptionAction.php | 7 ++--- src/Model/User/AnonymousUser.php | 34 +++++++++++++++++++++++ 2 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 src/Model/User/AnonymousUser.php diff --git a/src/Action/RegisterSubscriptionAction.php b/src/Action/RegisterSubscriptionAction.php index 2e132f7..65ce9c7 100644 --- a/src/Action/RegisterSubscriptionAction.php +++ b/src/Action/RegisterSubscriptionAction.php @@ -3,9 +3,9 @@ namespace BenTools\WebPushBundle\Action; use BenTools\WebPushBundle\Model\Subscription\UserSubscriptionManagerRegistry; +use BenTools\WebPushBundle\Model\User\AnonymousUser; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException; use Symfony\Component\Security\Core\User\UserInterface; @@ -55,10 +55,6 @@ private function unsubscribe(UserInterface $user, string $subscriptionHash) public function __invoke(Request $request, UserInterface $user = null): Response { - if (null === $user) { - throw new AccessDeniedHttpException('Not authenticated.'); - } - if (!in_array($request->getMethod(), ['POST', 'DELETE'])) { throw new MethodNotAllowedHttpException(['POST', 'DELETE']); } @@ -66,6 +62,7 @@ public function __invoke(Request $request, UserInterface $user = null): Response $data = json_decode($request->getContent(), true); $subscription = $data['subscription'] ?? []; $options = $data['options'] ?? []; + $user = $user ?? new AnonymousUser(); if (JSON_ERROR_NONE !== json_last_error()) { throw new BadRequestHttpException(json_last_error_msg()); diff --git a/src/Model/User/AnonymousUser.php b/src/Model/User/AnonymousUser.php new file mode 100644 index 0000000..6fb0b77 --- /dev/null +++ b/src/Model/User/AnonymousUser.php @@ -0,0 +1,34 @@ + Date: Wed, 20 Sep 2023 23:40:54 +0100 Subject: [PATCH 2/2] add default return types... --- composer.json | 2 +- src/Action/RegisterSubscriptionAction.php | 2 +- src/Model/User/AnonymousUser.php | 16 ++++++++++------ 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/composer.json b/composer.json index 0741c8a..c7107fe 100644 --- a/composer.json +++ b/composer.json @@ -149,4 +149,4 @@ "chrome", "firefox" ] -} \ No newline at end of file +} diff --git a/src/Action/RegisterSubscriptionAction.php b/src/Action/RegisterSubscriptionAction.php index 97ec01e..44e5fdf 100644 --- a/src/Action/RegisterSubscriptionAction.php +++ b/src/Action/RegisterSubscriptionAction.php @@ -56,7 +56,7 @@ public function __invoke(Request $request, UserInterface $user = null): Response $data = json_decode($request->getContent(), true); $subscription = $data['subscription'] ?? []; $options = $data['options'] ?? []; - $user = $user ?? new AnonymousUser(); + $user ??= new AnonymousUser(); if (JSON_ERROR_NONE !== json_last_error()) { throw new BadRequestHttpException(json_last_error_msg()); diff --git a/src/Model/User/AnonymousUser.php b/src/Model/User/AnonymousUser.php index 6fb0b77..616cd10 100644 --- a/src/Model/User/AnonymousUser.php +++ b/src/Model/User/AnonymousUser.php @@ -10,25 +10,29 @@ * * @internal */ -class AnonymousUser implements UserInterface +final class AnonymousUser implements UserInterface { - public function getRoles() + public function getRoles(): array { + return []; } - public function getPassword() + public function getPassword(): ?string { + return null; } - public function getSalt() + public function getSalt(): ?string { + return null; } - public function getUsername() + public function getUsername(): string { + return ''; } - public function eraseCredentials() + public function eraseCredentials(): void { } }