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 100584c..44e5fdf 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; @@ -49,10 +49,6 @@ private function unsubscribe(UserInterface $user, string $subscriptionHash): voi 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']); } @@ -60,6 +56,7 @@ public function __invoke(Request $request, UserInterface $user = null): Response $data = json_decode($request->getContent(), true); $subscription = $data['subscription'] ?? []; $options = $data['options'] ?? []; + $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..616cd10 --- /dev/null +++ b/src/Model/User/AnonymousUser.php @@ -0,0 +1,38 @@ +