diff --git a/composer-dependency-analyser.php b/composer-dependency-analyser.php index e9fd6f437..99641e883 100644 --- a/composer-dependency-analyser.php +++ b/composer-dependency-analyser.php @@ -42,7 +42,6 @@ $config 'shipmonk/composer-dependency-analyser', 'symfony/asset', 'symfony/css-selector', - 'symfony/doctrine-bridge', 'symfony/google-mailer', 'symfony/intl', 'symfony/phpunit-bridge', diff --git a/rector.php b/rector.php index a0a6bd794..bf0b1b965 100644 --- a/rector.php +++ b/rector.php @@ -15,7 +15,7 @@ return RectorConfig::configure() ]) ->withRootFiles() ->withImportNames(importShortClasses: false) - ->withAttributesSets(doctrine: true) + ->withAttributesSets(symfony: true, doctrine: true) ->withConfiguredRule(ClassPropertyAssignToConstructorPromotionRector::class, [ 'inline_public' => true, ]) diff --git a/src/Consumer/AbstractConsumer.php b/src/Consumer/AbstractConsumer.php index 67b861921..7a0736114 100644 --- a/src/Consumer/AbstractConsumer.php +++ b/src/Consumer/AbstractConsumer.php @@ -7,7 +7,6 @@ use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Wallabag\Entity\Entry; -use Wallabag\Entity\Tag; use Wallabag\Event\EntrySavedEvent; use Wallabag\Import\AbstractImport; use Wallabag\Repository\UserRepository; diff --git a/src/Controller/AnnotationController.php b/src/Controller/AnnotationController.php index b9a9f97a9..a2731d374 100644 --- a/src/Controller/AnnotationController.php +++ b/src/Controller/AnnotationController.php @@ -32,11 +32,10 @@ class AnnotationController extends AbstractFOSRestController * * @see Api\WallabagRestController * - * @Route("/annotations/{entry}.{_format}", name="annotations_get_annotations", methods={"GET"}, defaults={"_format": "json"}) * @IsGranted("LIST_ANNOTATIONS", subject="entry") - * * @return JsonResponse */ + #[Route(path: '/annotations/{entry}.{_format}', name: 'annotations_get_annotations', methods: ['GET'], defaults: ['_format' => 'json'])] public function getAnnotationsAction(Entry $entry, AnnotationRepository $annotationRepository) { $annotationRows = $annotationRepository->findByEntryIdAndUserId($entry->getId(), $this->getUser()->getId()); @@ -54,11 +53,10 @@ class AnnotationController extends AbstractFOSRestController * * @see Api\WallabagRestController * - * @Route("/annotations/{entry}.{_format}", name="annotations_post_annotation", methods={"POST"}, defaults={"_format": "json"}) * @IsGranted("CREATE_ANNOTATIONS", subject="entry") - * * @return JsonResponse */ + #[Route(path: '/annotations/{entry}.{_format}', name: 'annotations_post_annotation', methods: ['POST'], defaults: ['_format' => 'json'])] public function postAnnotationAction(Request $request, Entry $entry) { $data = json_decode($request->getContent(), true); @@ -89,11 +87,10 @@ class AnnotationController extends AbstractFOSRestController * * @see Api\WallabagRestController * - * @Route("/annotations/{annotation}.{_format}", name="annotations_put_annotation", methods={"PUT"}, defaults={"_format": "json"}) * @IsGranted("EDIT", subject="annotation") - * * @return JsonResponse */ + #[Route(path: '/annotations/{annotation}.{_format}', name: 'annotations_put_annotation', methods: ['PUT'], defaults: ['_format' => 'json'])] public function putAnnotationAction(Request $request, Annotation $annotation) { try { @@ -125,11 +122,10 @@ class AnnotationController extends AbstractFOSRestController * * @see Api\WallabagRestController * - * @Route("/annotations/{annotation}.{_format}", name="annotations_delete_annotation", methods={"DELETE"}, defaults={"_format": "json"}) * @IsGranted("DELETE", subject="annotation") - * * @return JsonResponse */ + #[Route(path: '/annotations/{annotation}.{_format}', name: 'annotations_delete_annotation', methods: ['DELETE'], defaults: ['_format' => 'json'])] public function deleteAnnotationAction(Annotation $annotation) { try { diff --git a/src/Controller/Api/AnnotationRestController.php b/src/Controller/Api/AnnotationRestController.php index 31e6150fb..a68cd5b2d 100644 --- a/src/Controller/Api/AnnotationRestController.php +++ b/src/Controller/Api/AnnotationRestController.php @@ -34,12 +34,11 @@ class AnnotationRestController extends WallabagRestController * description="Returned when successful" * ) * ) - * - * @Route("/api/annotations/{entry}.{_format}", name="api_get_annotations", methods={"GET"}, defaults={"_format": "json"}) * @IsGranted("LIST_ANNOTATIONS", subject="entry") * * @return Response */ + #[Route(path: '/api/annotations/{entry}.{_format}', name: 'api_get_annotations', methods: ['GET'], defaults: ['_format' => 'json'])] public function getAnnotationsAction(Entry $entry) { return $this->forward('Wallabag\Controller\AnnotationController::getAnnotationsAction', [ @@ -100,11 +99,11 @@ class AnnotationRestController extends WallabagRestController * ) * ) * - * @Route("/api/annotations/{entry}.{_format}", name="api_post_annotation", methods={"POST"}, defaults={"_format": "json"}) * @IsGranted("CREATE_ANNOTATIONS", subject="entry") * * @return Response */ + #[Route(path: '/api/annotations/{entry}.{_format}', name: 'api_post_annotation', methods: ['POST'], defaults: ['_format' => 'json'])] public function postAnnotationAction(Request $request, Entry $entry) { return $this->forward('Wallabag\Controller\AnnotationController::postAnnotationAction', [ @@ -134,12 +133,11 @@ class AnnotationRestController extends WallabagRestController * description="Returned when successful" * ) * ) - * - * @Route("/api/annotations/{annotation}.{_format}", name="api_put_annotation", methods={"PUT"}, defaults={"_format": "json"}) * @IsGranted("EDIT", subject="annotation") * * @return Response */ + #[Route(path: '/api/annotations/{annotation}.{_format}', name: 'api_put_annotation', methods: ['PUT'], defaults: ['_format' => 'json'])] public function putAnnotationAction(Annotation $annotation, Request $request) { return $this->forward('Wallabag\Controller\AnnotationController::putAnnotationAction', [ @@ -169,12 +167,11 @@ class AnnotationRestController extends WallabagRestController * description="Returned when successful" * ) * ) - * - * @Route("/api/annotations/{annotation}.{_format}", name="api_delete_annotation", methods={"DELETE"}, defaults={"_format": "json"}) * @IsGranted("DELETE", subject="annotation") * * @return Response */ + #[Route(path: '/api/annotations/{annotation}.{_format}', name: 'api_delete_annotation', methods: ['DELETE'], defaults: ['_format' => 'json'])] public function deleteAnnotationAction(Annotation $annotation) { return $this->forward('Wallabag\Controller\AnnotationController::deleteAnnotationAction', [ diff --git a/src/Controller/Api/ConfigRestController.php b/src/Controller/Api/ConfigRestController.php index 47659fc30..bdc23843f 100644 --- a/src/Controller/Api/ConfigRestController.php +++ b/src/Controller/Api/ConfigRestController.php @@ -23,10 +23,9 @@ class ConfigRestController extends WallabagRestController * ) * ) * - * @Route("/api/config.{_format}", name="api_get_config", methods={"GET"}, defaults={"_format": "json"}) - * * @return JsonResponse */ + #[Route(path: '/api/config.{_format}', name: 'api_get_config', methods: ['GET'], defaults: ['_format' => 'json'])] public function getConfigAction(SerializerInterface $serializer) { $this->validateAuthentication(); diff --git a/src/Controller/Api/DeveloperController.php b/src/Controller/Api/DeveloperController.php index a2097c211..1fd1da554 100644 --- a/src/Controller/Api/DeveloperController.php +++ b/src/Controller/Api/DeveloperController.php @@ -18,10 +18,9 @@ class DeveloperController extends AbstractController /** * List all clients and link to create a new one. * - * @Route("/developer", name="developer", methods={"GET"}) - * * @return Response */ + #[Route(path: '/developer', name: 'developer', methods: ['GET'])] public function indexAction(ClientRepository $repo) { $clients = $repo->findByUser($this->getUser()->getId()); @@ -34,10 +33,9 @@ class DeveloperController extends AbstractController /** * Create a client (an app). * - * @Route("/developer/client/create", name="developer_create_client", methods={"GET", "POST"}) - * * @return Response */ + #[Route(path: '/developer/client/create', name: 'developer_create_client', methods: ['GET', 'POST'])] public function createClientAction(Request $request, EntityManagerInterface $entityManager, TranslatorInterface $translator) { $client = new Client($this->getUser()); @@ -69,10 +67,9 @@ class DeveloperController extends AbstractController /** * Remove a client. * - * @Route("/developer/client/delete/{id}", name="developer_delete_client", methods={"POST"}, requirements={"id" = "\d+"}) - * * @return RedirectResponse */ + #[Route(path: '/developer/client/delete/{id}', name: 'developer_delete_client', methods: ['POST'], requirements: ['id' => '\d+'])] public function deleteClientAction(Request $request, Client $client, EntityManagerInterface $entityManager, TranslatorInterface $translator) { if (!$this->isCsrfTokenValid('delete-client', $request->request->get('token'))) { @@ -97,10 +94,9 @@ class DeveloperController extends AbstractController /** * Display developer how to use an existing app. * - * @Route("/developer/howto/first-app", name="developer_howto_firstapp", methods={"GET"}) - * * @return Response */ + #[Route(path: '/developer/howto/first-app', name: 'developer_howto_firstapp', methods: ['GET'])] public function howtoFirstAppAction() { return $this->render('Developer/howto_app.html.twig'); diff --git a/src/Controller/Api/EntryRestController.php b/src/Controller/Api/EntryRestController.php index 5406f5c75..0870c2948 100644 --- a/src/Controller/Api/EntryRestController.php +++ b/src/Controller/Api/EntryRestController.php @@ -85,11 +85,11 @@ class EntryRestController extends WallabagRestController * ) * ) * - * @Route("/api/entries/exists.{_format}", name="api_get_entries_exists", methods={"GET"}, defaults={"_format": "json"}) * @IsGranted("LIST_ENTRIES") * * @return JsonResponse */ + #[Route(path: '/api/entries/exists.{_format}', name: 'api_get_entries_exists', methods: ['GET'], defaults: ['_format' => 'json'])] public function getEntriesExistsAction(Request $request, EntryRepository $entryRepository) { $returnId = (null === $request->query->get('return_id')) ? false : (bool) $request->query->get('return_id'); @@ -297,11 +297,11 @@ class EntryRestController extends WallabagRestController * ) * ) * - * @Route("/api/entries.{_format}", name="api_get_entries", methods={"GET"}, defaults={"_format": "json"}) * @IsGranted("LIST_ENTRIES") * * @return JsonResponse */ + #[Route(path: '/api/entries.{_format}', name: 'api_get_entries', methods: ['GET'], defaults: ['_format' => 'json'])] public function getEntriesAction(Request $request, EntryRepository $entryRepository) { $isArchived = (null === $request->query->get('archive')) ? null : (bool) $request->query->get('archive'); @@ -387,12 +387,11 @@ class EntryRestController extends WallabagRestController * description="Returned when successful" * ) * ) - * - * @Route("/api/entries/{entry}.{_format}", name="api_get_entry", methods={"GET"}, defaults={"_format": "json"}) * @IsGranted("VIEW", subject="entry") * * @return JsonResponse */ + #[Route(path: '/api/entries/{entry}.{_format}', name: 'api_get_entry', methods: ['GET'], defaults: ['_format' => 'json'])] public function getEntryAction(Entry $entry) { return $this->sendResponse($entry); @@ -430,11 +429,11 @@ class EntryRestController extends WallabagRestController * ) * ) * - * @Route("/api/entries/{entry}/export.{_format}", name="api_get_entry_export", methods={"GET"}, defaults={"_format": "json"}) * @IsGranted("VIEW", subject="entry") * * @return Response */ + #[Route(path: '/api/entries/{entry}/export.{_format}', name: 'api_get_entry_export', methods: ['GET'], defaults: ['_format' => 'json'])] public function getEntryExportAction(Entry $entry, Request $request, EntriesExport $entriesExport) { return $entriesExport @@ -462,12 +461,11 @@ class EntryRestController extends WallabagRestController * description="Returned when successful" * ) * ) - * - * @Route("/api/entries/list.{_format}", name="api_delete_entries_list", methods={"DELETE"}, defaults={"_format": "json"}) * @IsGranted("DELETE_ENTRIES") * * @return JsonResponse */ + #[Route(path: '/api/entries/list.{_format}', name: 'api_delete_entries_list', methods: ['DELETE'], defaults: ['_format' => 'json'])] public function deleteEntriesListAction(Request $request, EntryRepository $entryRepository, EventDispatcherInterface $eventDispatcher) { $urls = json_decode($request->query->get('urls', '[]')); @@ -520,13 +518,13 @@ class EntryRestController extends WallabagRestController * ) * ) * - * @Route("/api/entries/lists.{_format}", name="api_post_entries_list", methods={"POST"}, defaults={"_format": "json"}) * @IsGranted("CREATE_ENTRIES") * * @throws HttpException When limit is reached * * @return JsonResponse */ + #[Route(path: '/api/entries/lists.{_format}', name: 'api_post_entries_list', methods: ['POST'], defaults: ['_format' => 'json'])] public function postEntriesListAction(Request $request, EntryRepository $entryRepository, EventDispatcherInterface $eventDispatcher, ContentProxy $contentProxy) { $urls = json_decode($request->query->get('urls', '[]')); @@ -704,11 +702,11 @@ class EntryRestController extends WallabagRestController * ) * ) * - * @Route("/api/entries.{_format}", name="api_post_entries", methods={"POST"}, defaults={"_format": "json"}) * @IsGranted("CREATE_ENTRIES") * * @return JsonResponse */ + #[Route(path: '/api/entries.{_format}', name: 'api_post_entries', methods: ['POST'], defaults: ['_format' => 'json'])] public function postEntriesAction( Request $request, EntryRepository $entryRepository, @@ -928,11 +926,11 @@ class EntryRestController extends WallabagRestController * ) * ) * - * @Route("/api/entries/{entry}.{_format}", name="api_patch_entries", methods={"PATCH"}, defaults={"_format": "json"}) * @IsGranted("EDIT", subject="entry") * * @return JsonResponse */ + #[Route(path: '/api/entries/{entry}.{_format}', name: 'api_patch_entries', methods: ['PATCH'], defaults: ['_format' => 'json'])] public function patchEntriesAction(Entry $entry, Request $request, ContentProxy $contentProxy, LoggerInterface $logger, TagsAssigner $tagsAssigner, EventDispatcherInterface $eventDispatcher) { $data = $this->retrieveValueFromRequest($request); @@ -1042,12 +1040,11 @@ class EntryRestController extends WallabagRestController * description="Returned when successful" * ) * ) - * - * @Route("/api/entries/{entry}/reload.{_format}", name="api_patch_entries_reload", methods={"PATCH"}, defaults={"_format": "json"}) * @IsGranted("RELOAD", subject="entry") * * @return JsonResponse */ + #[Route(path: '/api/entries/{entry}/reload.{_format}', name: 'api_patch_entries_reload', methods: ['PATCH'], defaults: ['_format' => 'json'])] public function patchEntriesReloadAction(Entry $entry, ContentProxy $contentProxy, LoggerInterface $logger, EventDispatcherInterface $eventDispatcher) { try { @@ -1097,12 +1094,11 @@ class EntryRestController extends WallabagRestController * description="Returned when successful" * ) * ) - * - * @Route("/api/entries/{entry}.{_format}", name="api_delete_entries", methods={"DELETE"}, defaults={"_format": "json"}) * @IsGranted("DELETE", subject="entry") * * @return JsonResponse */ + #[Route(path: '/api/entries/{entry}.{_format}', name: 'api_delete_entries', methods: ['DELETE'], defaults: ['_format' => 'json'])] public function deleteEntriesAction(Entry $entry, Request $request, EventDispatcherInterface $eventDispatcher) { $expect = $request->query->get('expect', 'entry'); @@ -1149,12 +1145,11 @@ class EntryRestController extends WallabagRestController * description="Returned when successful" * ) * ) - * - * @Route("/api/entries/{entry}/tags.{_format}", name="api_get_entries_tags", methods={"GET"}, defaults={"_format": "json"}) * @IsGranted("LIST_TAGS", subject="entry") * * @return JsonResponse */ + #[Route(path: '/api/entries/{entry}/tags.{_format}', name: 'api_get_entries_tags', methods: ['GET'], defaults: ['_format' => 'json'])] public function getEntriesTagsAction(Entry $entry) { return $this->sendResponse($entry->getTags()); @@ -1192,11 +1187,11 @@ class EntryRestController extends WallabagRestController * ) * ) * - * @Route("/api/entries/{entry}/tags.{_format}", name="api_post_entries_tags", methods={"POST"}, defaults={"_format": "json"}) * @IsGranted("TAG", subject="entry") * * @return JsonResponse */ + #[Route(path: '/api/entries/{entry}/tags.{_format}', name: 'api_post_entries_tags', methods: ['POST'], defaults: ['_format' => 'json'])] public function postEntriesTagsAction(Request $request, Entry $entry, TagsAssigner $tagsAssigner) { $tags = $request->request->get('tags', ''); @@ -1242,11 +1237,11 @@ class EntryRestController extends WallabagRestController * ) * ) * - * @Route("/api/entries/{entry}/tags/{tag}.{_format}", name="api_delete_entries_tags", methods={"DELETE"}, defaults={"_format": "json"}) * @IsGranted("UNTAG", subject="entry") * * @return JsonResponse */ + #[Route(path: '/api/entries/{entry}/tags/{tag}.{_format}', name: 'api_delete_entries_tags', methods: ['DELETE'], defaults: ['_format' => 'json'])] public function deleteEntriesTagsAction(Entry $entry, Tag $tag) { $entry->removeTag($tag); @@ -1275,12 +1270,11 @@ class EntryRestController extends WallabagRestController * description="Returned when successful" * ) * ) - * - * @Route("/api/entries/tags/list.{_format}", name="api_delete_entries_tags_list", methods={"DELETE"}, defaults={"_format": "json"}) * @IsGranted("DELETE_TAGS") * * @return JsonResponse */ + #[Route(path: '/api/entries/tags/list.{_format}', name: 'api_delete_entries_tags_list', methods: ['DELETE'], defaults: ['_format' => 'json'])] public function deleteEntriesTagsListAction(Request $request, TagRepository $tagRepository, EntryRepository $entryRepository) { $list = json_decode($request->query->get('list', '[]')); @@ -1341,12 +1335,11 @@ class EntryRestController extends WallabagRestController * description="Returned when successful" * ) * ) - * - * @Route("/api/entries/tags/lists.{_format}", name="api_post_entries_tags_list", methods={"POST"}, defaults={"_format": "json"}) * @IsGranted("CREATE_TAGS") * * @return JsonResponse */ + #[Route(path: '/api/entries/tags/lists.{_format}', name: 'api_post_entries_tags_list', methods: ['POST'], defaults: ['_format' => 'json'])] public function postEntriesTagsListAction(Request $request, EntryRepository $entryRepository, TagsAssigner $tagsAssigner) { $list = json_decode($request->query->get('list', '[]')); diff --git a/src/Controller/Api/SearchRestController.php b/src/Controller/Api/SearchRestController.php index e00920c7b..72fc97fba 100644 --- a/src/Controller/Api/SearchRestController.php +++ b/src/Controller/Api/SearchRestController.php @@ -55,11 +55,11 @@ class SearchRestController extends WallabagRestController * ) * ) * - * @Route("/api/search.{_format}", name="api_get_search", methods={"GET"}, defaults={"_format": "json"}) * @IsGranted("LIST_ENTRIES") * * @return JsonResponse */ + #[Route(path: '/api/search.{_format}', name: 'api_get_search', methods: ['GET'], defaults: ['_format' => 'json'])] public function getSearchAction(Request $request, EntryRepository $entryRepository) { $term = $request->query->get('term'); diff --git a/src/Controller/Api/TagRestController.php b/src/Controller/Api/TagRestController.php index d8757cd92..1fac9f13f 100644 --- a/src/Controller/Api/TagRestController.php +++ b/src/Controller/Api/TagRestController.php @@ -26,10 +26,9 @@ class TagRestController extends WallabagRestController * ) * ) * - * @Route("/api/tags.{_format}", name="api_get_tags", methods={"GET"}, defaults={"_format": "json"}) - * * @return JsonResponse */ + #[Route(path: '/api/tags.{_format}', name: 'api_get_tags', methods: ['GET'], defaults: ['_format' => 'json'])] public function getTagsAction(TagRepository $tagRepository) { $this->validateAuthentication(); @@ -63,10 +62,9 @@ class TagRestController extends WallabagRestController * ) * ) * - * @Route("/api/tag/label.{_format}", name="api_delete_tag_label", methods={"DELETE"}, defaults={"_format": "json"}) - * * @return JsonResponse */ + #[Route(path: '/api/tag/label.{_format}', name: 'api_delete_tag_label', methods: ['DELETE'], defaults: ['_format' => 'json'])] public function deleteTagLabelAction(Request $request, TagRepository $tagRepository, EntryRepository $entryRepository) { $this->validateAuthentication(); @@ -111,10 +109,9 @@ class TagRestController extends WallabagRestController * ) * ) * - * @Route("/api/tags/label.{_format}", name="api_delete_tags_label", methods={"DELETE"}, defaults={"_format": "json"}) - * * @return JsonResponse */ + #[Route(path: '/api/tags/label.{_format}', name: 'api_delete_tags_label', methods: ['DELETE'], defaults: ['_format' => 'json'])] public function deleteTagsLabelAction(Request $request, TagRepository $tagRepository, EntryRepository $entryRepository) { $this->validateAuthentication(); @@ -158,10 +155,9 @@ class TagRestController extends WallabagRestController * ) * ) * - * @Route("/api/tags/{tag}.{_format}", name="api_delete_tag", methods={"DELETE"}, defaults={"_format": "json"}) - * * @return JsonResponse */ + #[Route(path: '/api/tags/{tag}.{_format}', name: 'api_delete_tag', methods: ['DELETE'], defaults: ['_format' => 'json'])] public function deleteTagAction(Tag $tag, TagRepository $tagRepository, EntryRepository $entryRepository) { $this->validateAuthentication(); diff --git a/src/Controller/Api/TaggingRuleRestController.php b/src/Controller/Api/TaggingRuleRestController.php index 6137da796..7f9f11d5f 100644 --- a/src/Controller/Api/TaggingRuleRestController.php +++ b/src/Controller/Api/TaggingRuleRestController.php @@ -23,10 +23,9 @@ class TaggingRuleRestController extends WallabagRestController * ) * ) * - * @Route("/api/taggingrule/export.{_format}", name="api_get_taggingrule_export", methods={"GET"}, defaults={"_format": "json"}) - * * @return Response */ + #[Route(path: '/api/taggingrule/export.{_format}', name: 'api_get_taggingrule_export', methods: ['GET'], defaults: ['_format' => 'json'])] public function getTaggingruleExportAction() { $this->validateAuthentication(); diff --git a/src/Controller/Api/WallabagRestController.php b/src/Controller/Api/WallabagRestController.php index d3b493e48..fad611536 100644 --- a/src/Controller/Api/WallabagRestController.php +++ b/src/Controller/Api/WallabagRestController.php @@ -50,10 +50,9 @@ class WallabagRestController extends AbstractFOSRestController * * @deprecated Should use info endpoint instead * - * @Route("/api/version.{_format}", name="api_get_version", methods={"GET"}, defaults={"_format": "json"}) - * * @return JsonResponse */ + #[Route(path: '/api/version.{_format}', name: 'api_get_version', methods: ['GET'], defaults: ['_format' => 'json'])] public function getVersionAction() { $version = $this->getParameter('wallabag.version'); @@ -73,10 +72,9 @@ class WallabagRestController extends AbstractFOSRestController * ) * ) * - * @Route("/api/info.{_format}", name="api_get_info", methods={"GET"}, defaults={"_format": "json"}) - * * @return JsonResponse */ + #[Route(path: '/api/info.{_format}', name: 'api_get_info', methods: ['GET'], defaults: ['_format' => 'json'])] public function getInfoAction(Config $craueConfig) { $info = new ApplicationInfo( diff --git a/src/Controller/ConfigController.php b/src/Controller/ConfigController.php index 00bb6ea35..c60f53d43 100644 --- a/src/Controller/ConfigController.php +++ b/src/Controller/ConfigController.php @@ -57,9 +57,9 @@ class ConfigController extends AbstractController } /** - * @Route("/config", name="config", methods={"GET", "POST"}) * @IsGranted("EDIT_CONFIG") */ + #[Route(path: '/config', name: 'config', methods: ['GET', 'POST'])] public function indexAction(Request $request, Config $craueConfig, TaggingRuleRepository $taggingRuleRepository, IgnoreOriginUserRuleRepository $ignoreOriginUserRuleRepository, UserRepository $userRepository) { $config = $this->getConfig(); @@ -250,9 +250,9 @@ class ConfigController extends AbstractController /** * Disable 2FA using email. * - * @Route("/config/otp/email/disable", name="disable_otp_email", methods={"POST"}) * @IsGranted("EDIT_CONFIG") */ + #[Route(path: '/config/otp/email/disable', name: 'disable_otp_email', methods: ['POST'])] public function disableOtpEmailAction(Request $request) { if (!$this->isCsrfTokenValid('otp', $request->request->get('token'))) { @@ -276,9 +276,9 @@ class ConfigController extends AbstractController /** * Enable 2FA using email. * - * @Route("/config/otp/email", name="config_otp_email", methods={"POST"}) * @IsGranted("EDIT_CONFIG") */ + #[Route(path: '/config/otp/email', name: 'config_otp_email', methods: ['POST'])] public function otpEmailAction(Request $request) { if (!$this->isCsrfTokenValid('otp', $request->request->get('token'))) { @@ -305,9 +305,9 @@ class ConfigController extends AbstractController /** * Disable 2FA using OTP app. * - * @Route("/config/otp/app/disable", name="disable_otp_app", methods={"POST"}) * @IsGranted("EDIT_CONFIG") */ + #[Route(path: '/config/otp/app/disable', name: 'disable_otp_app', methods: ['POST'])] public function disableOtpAppAction(Request $request) { if (!$this->isCsrfTokenValid('otp', $request->request->get('token'))) { @@ -333,9 +333,9 @@ class ConfigController extends AbstractController /** * Enable 2FA using OTP app, user will need to confirm the generated code from the app. * - * @Route("/config/otp/app", name="config_otp_app", methods={"POST"}) * @IsGranted("EDIT_CONFIG") */ + #[Route(path: '/config/otp/app', name: 'config_otp_app', methods: ['POST'])] public function otpAppAction(Request $request, GoogleAuthenticatorInterface $googleAuthenticator) { if (!$this->isCsrfTokenValid('otp', $request->request->get('token'))) { @@ -393,9 +393,9 @@ class ConfigController extends AbstractController /** * Validate OTP code. * - * @Route("/config/otp/app/check", name="config_otp_app_check", methods={"POST"}) * @IsGranted("EDIT_CONFIG") */ + #[Route(path: '/config/otp/app/check', name: 'config_otp_app_check', methods: ['POST'])] public function otpAppCheckAction(Request $request, GoogleAuthenticatorInterface $googleAuthenticator) { if (!$this->isCsrfTokenValid('otp', $request->request->get('token'))) { @@ -430,11 +430,10 @@ class ConfigController extends AbstractController } /** - * @Route("/generate-token", name="generate_token", methods={"GET"}) * @IsGranted("EDIT_CONFIG") - * * @return RedirectResponse|JsonResponse */ + #[Route(path: '/generate-token', name: 'generate_token', methods: ['GET'])] public function generateTokenAction(Request $request) { $config = $this->getConfig(); @@ -456,11 +455,10 @@ class ConfigController extends AbstractController } /** - * @Route("/revoke-token", name="revoke_token", methods={"GET"}) * @IsGranted("EDIT_CONFIG") - * * @return RedirectResponse|JsonResponse */ + #[Route(path: '/revoke-token', name: 'revoke_token', methods: ['GET'])] public function revokeTokenAction(Request $request) { $config = $this->getConfig(); @@ -484,11 +482,10 @@ class ConfigController extends AbstractController /** * Deletes a tagging rule and redirect to the config homepage. * - * @Route("/tagging-rule/delete/{taggingRule}", name="delete_tagging_rule", methods={"GET"}, requirements={"taggingRule" = "\d+"}) * @IsGranted("DELETE", subject="taggingRule") - * * @return RedirectResponse */ + #[Route(path: '/tagging-rule/delete/{taggingRule}', name: 'delete_tagging_rule', methods: ['GET'], requirements: ['taggingRule' => '\d+'])] public function deleteTaggingRuleAction(TaggingRule $taggingRule) { $this->entityManager->remove($taggingRule); @@ -505,11 +502,10 @@ class ConfigController extends AbstractController /** * Edit a tagging rule. * - * @Route("/tagging-rule/edit/{taggingRule}", name="edit_tagging_rule", methods={"GET"}, requirements={"taggingRule" = "\d+"}) * @IsGranted("EDIT", subject="taggingRule") - * * @return RedirectResponse */ + #[Route(path: '/tagging-rule/edit/{taggingRule}', name: 'edit_tagging_rule', methods: ['GET'], requirements: ['taggingRule' => '\d+'])] public function editTaggingRuleAction(TaggingRule $taggingRule) { return $this->redirect($this->generateUrl('config') . '?tagging-rule=' . $taggingRule->getId() . '#set5'); @@ -518,11 +514,10 @@ class ConfigController extends AbstractController /** * Deletes an ignore origin rule and redirect to the config homepage. * - * @Route("/ignore-origin-user-rule/delete/{ignoreOriginUserRule}", name="delete_ignore_origin_rule", methods={"GET"}, requirements={"ignoreOriginUserRule" = "\d+"}) * @IsGranted("DELETE", subject="ignoreOriginUserRule") - * * @return RedirectResponse */ + #[Route(path: '/ignore-origin-user-rule/delete/{ignoreOriginUserRule}', name: 'delete_ignore_origin_rule', methods: ['GET'], requirements: ['ignoreOriginUserRule' => '\d+'])] public function deleteIgnoreOriginRuleAction(IgnoreOriginUserRule $ignoreOriginUserRule) { $this->entityManager->remove($ignoreOriginUserRule); @@ -539,11 +534,10 @@ class ConfigController extends AbstractController /** * Edit an ignore origin rule. * - * @Route("/ignore-origin-user-rule/edit/{ignoreOriginUserRule}", name="edit_ignore_origin_rule", methods={"GET"}, requirements={"ignoreOriginUserRule" = "\d+"}) * @IsGranted("EDIT", subject="ignoreOriginUserRule") - * * @return RedirectResponse */ + #[Route(path: '/ignore-origin-user-rule/edit/{ignoreOriginUserRule}', name: 'edit_ignore_origin_rule', methods: ['GET'], requirements: ['ignoreOriginUserRule' => '\d+'])] public function editIgnoreOriginRuleAction(IgnoreOriginUserRule $ignoreOriginUserRule) { return $this->redirect($this->generateUrl('config') . '?ignore-origin-user-rule=' . $ignoreOriginUserRule->getId() . '#set6'); @@ -552,11 +546,10 @@ class ConfigController extends AbstractController /** * Remove all annotations OR tags OR entries for the current user. * - * @Route("/reset/{type}", name="config_reset", methods={"POST"}, requirements={"id" = "annotations|tags|entries|tagging_rules"}) * @IsGranted("EDIT_CONFIG") - * * @return RedirectResponse */ + #[Route(path: '/reset/{type}', name: 'config_reset', methods: ['POST'], requirements: ['id' => 'annotations|tags|entries|tagging_rules'])] public function resetAction(Request $request, string $type, AnnotationRepository $annotationRepository, EntryRepository $entryRepository, TaggingRuleRepository $taggingRuleRepository) { if (!$this->isCsrfTokenValid('reset-area', $request->request->get('token'))) { @@ -608,13 +601,12 @@ class ConfigController extends AbstractController /** * Delete account for current user. * - * @Route("/account/delete", name="delete_account", methods={"POST"}) * @IsGranted("EDIT_CONFIG") * * @throws AccessDeniedHttpException - * * @return RedirectResponse */ + #[Route(path: '/account/delete', name: 'delete_account', methods: ['POST'])] public function deleteAccountAction(Request $request, UserRepository $userRepository, TokenStorageInterface $tokenStorage) { if (!$this->isCsrfTokenValid('delete-account', $request->request->get('token'))) { @@ -641,11 +633,10 @@ class ConfigController extends AbstractController /** * Switch view mode for current user. * - * @Route("/config/view-mode", name="switch_view_mode", methods={"GET"}) * @IsGranted("EDIT_CONFIG") - * * @return RedirectResponse */ + #[Route(path: '/config/view-mode', name: 'switch_view_mode', methods: ['GET'])] public function changeViewModeAction(Request $request) { $user = $this->getUser(); @@ -664,11 +655,10 @@ class ConfigController extends AbstractController * * @param string $language * - * @Route("/locale/{language}", name="changeLocale", methods={"GET"}) * @IsGranted("PUBLIC_ACCESS") - * * @return RedirectResponse */ + #[Route(path: '/locale/{language}', name: 'changeLocale', methods: ['GET'])] public function setLocaleAction(Request $request, ValidatorInterface $validator, $language = null) { $errors = $validator->validate($language, new LocaleConstraint(['canonicalize' => true])); @@ -683,11 +673,10 @@ class ConfigController extends AbstractController /** * Export tagging rules for the logged in user. * - * @Route("/tagging-rule/export", name="export_tagging_rule", methods={"GET"}) * @IsGranted("EDIT_CONFIG") - * * @return Response */ + #[Route(path: '/tagging-rule/export', name: 'export_tagging_rule', methods: ['GET'])] public function exportTaggingRulesAction() { $data = SerializerBuilder::create()->build()->serialize( diff --git a/src/Controller/EntryController.php b/src/Controller/EntryController.php index 40bbd2c7d..96c2695ec 100644 --- a/src/Controller/EntryController.php +++ b/src/Controller/EntryController.php @@ -46,11 +46,10 @@ class EntryController extends AbstractController } /** - * @Route("/mass", name="mass_action", methods={"POST"}) * @IsGranted("EDIT_ENTRIES") - * * @return Response */ + #[Route(path: '/mass', name: 'mass_action', methods: ['POST'])] public function massAction(Request $request, TagRepository $tagRepository) { $values = $request->request->all(); @@ -132,14 +131,13 @@ class EntryController extends AbstractController /** * @param int $page * - * @Route("/search/{page}", name="search", methods={"GET", "POST"}, defaults={"page" = 1}) * @IsGranted("LIST_ENTRIES") * * Default parameter for page is hardcoded (in duplication of the defaults from the Route) * because this controller is also called inside the layout template without any page as argument - * * @return Response */ + #[Route(path: '/search/{page}', name: 'search', methods: ['GET', 'POST'], defaults: ['page' => 1])] public function searchFormAction(Request $request, $page = 1, $currentRoute = null) { // fallback to retrieve currentRoute from query parameter instead of injected one (when using inside a template) @@ -162,11 +160,10 @@ class EntryController extends AbstractController } /** - * @Route("/new-entry", name="new_entry", methods={"GET", "POST"}) * @IsGranted("CREATE_ENTRIES") - * * @return Response */ + #[Route(path: '/new-entry', name: 'new_entry', methods: ['GET', 'POST'])] public function addEntryFormAction(Request $request, TranslatorInterface $translator) { $entry = new Entry($this->getUser()); @@ -206,11 +203,10 @@ class EntryController extends AbstractController } /** - * @Route("/bookmarklet", name="bookmarklet", methods={"GET"}) * @IsGranted("CREATE_ENTRIES") - * * @return Response */ + #[Route(path: '/bookmarklet', name: 'bookmarklet', methods: ['GET'])] public function addEntryViaBookmarkletAction(Request $request) { $entry = new Entry($this->getUser()); @@ -230,11 +226,10 @@ class EntryController extends AbstractController } /** - * @Route("/new", name="new", methods={"GET"}) * @IsGranted("CREATE_ENTRIES") - * * @return Response */ + #[Route(path: '/new', name: 'new', methods: ['GET'])] public function addEntryAction() { return $this->render('Entry/new.html.twig'); @@ -243,11 +238,10 @@ class EntryController extends AbstractController /** * Edit an entry content. * - * @Route("/edit/{id}", name="edit", methods={"GET", "POST"}, requirements={"id" = "\d+"}) * @IsGranted("EDIT", subject="entry") - * * @return Response */ + #[Route(path: '/edit/{id}', name: 'edit', methods: ['GET', 'POST'], requirements: ['id' => '\d+'])] public function editEntryAction(Request $request, Entry $entry) { $form = $this->createForm(EditEntryType::class, $entry); @@ -276,11 +270,10 @@ class EntryController extends AbstractController * * @param int $page * - * @Route("/all/list/{page}", name="all", methods={"GET"}, defaults={"page" = "1"}) * @IsGranted("LIST_ENTRIES") - * * @return Response */ + #[Route(path: '/all/list/{page}', name: 'all', methods: ['GET'], defaults: ['page' => '1'])] public function showAllAction(Request $request, $page) { return $this->showEntries('all', $request, $page); @@ -291,11 +284,10 @@ class EntryController extends AbstractController * * @param int $page * - * @Route("/unread/list/{page}", name="unread", methods={"GET"}, defaults={"page" = "1"}) * @IsGranted("LIST_ENTRIES") - * * @return Response */ + #[Route(path: '/unread/list/{page}', name: 'unread', methods: ['GET'], defaults: ['page' => '1'])] public function showUnreadAction(Request $request, $page) { // load the quickstart if no entry in database @@ -311,11 +303,10 @@ class EntryController extends AbstractController * * @param int $page * - * @Route("/archive/list/{page}", name="archive", methods={"GET"}, defaults={"page" = "1"}) * @IsGranted("LIST_ENTRIES") - * * @return Response */ + #[Route(path: '/archive/list/{page}', name: 'archive', methods: ['GET'], defaults: ['page' => '1'])] public function showArchiveAction(Request $request, $page) { return $this->showEntries('archive', $request, $page); @@ -326,11 +317,10 @@ class EntryController extends AbstractController * * @param int $page * - * @Route("/starred/list/{page}", name="starred", methods={"GET"}, defaults={"page" = "1"}) * @IsGranted("LIST_ENTRIES") - * * @return Response */ + #[Route(path: '/starred/list/{page}', name: 'starred', methods: ['GET'], defaults: ['page' => '1'])] public function showStarredAction(Request $request, $page) { return $this->showEntries('starred', $request, $page); @@ -341,11 +331,10 @@ class EntryController extends AbstractController * * @param int $page * - * @Route("/untagged/list/{page}", name="untagged", methods={"GET"}, defaults={"page" = "1"}) * @IsGranted("LIST_ENTRIES") - * * @return Response */ + #[Route(path: '/untagged/list/{page}', name: 'untagged', methods: ['GET'], defaults: ['page' => '1'])] public function showUntaggedEntriesAction(Request $request, $page) { return $this->showEntries('untagged', $request, $page); @@ -356,11 +345,10 @@ class EntryController extends AbstractController * * @param int $page * - * @Route("/annotated/list/{page}", name="annotated", methods={"GET"}, defaults={"page" = "1"}) * @IsGranted("LIST_ENTRIES") - * * @return Response */ + #[Route(path: '/annotated/list/{page}', name: 'annotated', methods: ['GET'], defaults: ['page' => '1'])] public function showWithAnnotationsEntriesAction(Request $request, $page) { return $this->showEntries('annotated', $request, $page); @@ -369,11 +357,10 @@ class EntryController extends AbstractController /** * Shows random entry depending on the given type. * - * @Route("/{type}/random", name="random_entry", methods={"GET"}, requirements={"type": "unread|starred|archive|untagged|annotated|all"}) * @IsGranted("LIST_ENTRIES") - * * @return RedirectResponse */ + #[Route(path: '/{type}/random', name: 'random_entry', methods: ['GET'], requirements: ['type' => 'unread|starred|archive|untagged|annotated|all'])] public function redirectRandomEntryAction(string $type = 'all') { try { @@ -391,11 +378,10 @@ class EntryController extends AbstractController /** * Shows entry content. * - * @Route("/view/{id}", name="view", methods={"GET"}, requirements={"id" = "\d+"}) * @IsGranted("VIEW", subject="entry") - * * @return Response */ + #[Route(path: '/view/{id}', name: 'view', methods: ['GET'], requirements: ['id' => '\d+'])] public function viewAction(Entry $entry) { return $this->render( @@ -408,11 +394,10 @@ class EntryController extends AbstractController * Reload an entry. * Refetch content from the website and make it readable again. * - * @Route("/reload/{id}", name="reload_entry", methods={"GET"}, requirements={"id" = "\d+"}) * @IsGranted("RELOAD", subject="entry") - * * @return RedirectResponse */ + #[Route(path: '/reload/{id}', name: 'reload_entry', methods: ['GET'], requirements: ['id' => '\d+'])] public function reloadAction(Entry $entry) { $this->updateEntry($entry, 'entry_reloaded'); @@ -436,11 +421,10 @@ class EntryController extends AbstractController /** * Changes read status for an entry. * - * @Route("/archive/{id}", name="archive_entry", methods={"GET"}, requirements={"id" = "\d+"}) * @IsGranted("ARCHIVE", subject="entry") - * * @return RedirectResponse */ + #[Route(path: '/archive/{id}', name: 'archive_entry', methods: ['GET'], requirements: ['id' => '\d+'])] public function toggleArchiveAction(Request $request, Entry $entry) { $entry->toggleArchive(); @@ -464,11 +448,10 @@ class EntryController extends AbstractController /** * Changes starred status for an entry. * - * @Route("/star/{id}", name="star_entry", methods={"GET"}, requirements={"id" = "\d+"}) * @IsGranted("STAR", subject="entry") - * * @return RedirectResponse */ + #[Route(path: '/star/{id}', name: 'star_entry', methods: ['GET'], requirements: ['id' => '\d+'])] public function toggleStarAction(Request $request, Entry $entry) { $entry->toggleStar(); @@ -493,11 +476,10 @@ class EntryController extends AbstractController /** * Deletes entry and redirect to the homepage or the last viewed page. * - * @Route("/delete/{id}", name="delete_entry", methods={"GET"}, requirements={"id" = "\d+"}) * @IsGranted("DELETE", subject="entry") - * * @return RedirectResponse */ + #[Route(path: '/delete/{id}', name: 'delete_entry', methods: ['GET'], requirements: ['id' => '\d+'])] public function deleteEntryAction(Request $request, Entry $entry) { // generates the view url for this entry to check for redirection later @@ -530,11 +512,10 @@ class EntryController extends AbstractController /** * Get public URL for entry (and generate it if necessary). * - * @Route("/share/{id}", name="share", methods={"GET"}, requirements={"id" = "\d+"}) * @IsGranted("SHARE", subject="entry") - * * @return Response */ + #[Route(path: '/share/{id}', name: 'share', methods: ['GET'], requirements: ['id' => '\d+'])] public function shareAction(Entry $entry) { if (null === $entry->getUid()) { @@ -552,11 +533,10 @@ class EntryController extends AbstractController /** * Disable public sharing for an entry. * - * @Route("/share/delete/{id}", name="delete_share", methods={"GET"}, requirements={"id" = "\d+"}) * @IsGranted("UNSHARE", subject="entry") - * * @return Response */ + #[Route(path: '/share/delete/{id}', name: 'delete_share', methods: ['GET'], requirements: ['id' => '\d+'])] public function deleteShareAction(Entry $entry) { $entry->cleanUid(); @@ -572,12 +552,11 @@ class EntryController extends AbstractController /** * Ability to view a content publicly. * - * @Route("/share/{uid}", name="share_entry", methods={"GET"}, requirements={"uid" = ".+"}) * @Cache(maxage="25200", smaxage="25200", public=true) * @IsGranted("PUBLIC_ACCESS") - * * @return Response */ + #[Route(path: '/share/{uid}', name: 'share_entry', methods: ['GET'], requirements: ['uid' => '.+'])] public function shareEntryAction(Entry $entry, Config $craueConfig) { if (!$craueConfig->get('share_public')) { @@ -595,11 +574,10 @@ class EntryController extends AbstractController * * @param int $page * - * @Route("/domain/{id}/{page}", name="same_domain", methods={"GET"}, requirements={"id" = "\d+"}, defaults={"page" = 1}) * @IsGranted("LIST_ENTRIES") - * * @return Response */ + #[Route(path: '/domain/{id}/{page}', name: 'same_domain', methods: ['GET'], requirements: ['id' => '\d+'], defaults: ['page' => 1])] public function getSameDomainEntries(Request $request, $page = 1) { return $this->showEntries('same-domain', $request, $page); diff --git a/src/Controller/ExportController.php b/src/Controller/ExportController.php index 64f75c3a2..9999373ba 100644 --- a/src/Controller/ExportController.php +++ b/src/Controller/ExportController.php @@ -21,14 +21,10 @@ class ExportController extends AbstractController /** * Gets one entry content. * - * @Route("/export/{entry}.{format}", name="export_entry", methods={"GET"}, requirements={ - * "format": "epub|pdf|json|xml|txt|csv|md", - * "entry": "\d+" - * }) * @IsGranted("EXPORT", subject="entry") - * * @return Response */ + #[Route(path: '/export/{entry}.{format}', name: 'export_entry', methods: ['GET'], requirements: ['format' => 'epub|pdf|json|xml|txt|csv|md', 'entry' => '\d+'])] public function downloadEntryAction(Request $request, EntryRepository $entryRepository, EntriesExport $entriesExport, string $format, Entry $entry) { try { @@ -45,14 +41,10 @@ class ExportController extends AbstractController /** * Export all entries for current user. * - * @Route("/export/{category}.{format}", name="export_entries", methods={"GET"}, requirements={ - * "format": "epub|pdf|json|xml|txt|csv|md", - * "category": "all|unread|starred|archive|tag_entries|untagged|search|annotated|same_domain" - * }) * @IsGranted("EXPORT_ENTRIES") - * * @return Response */ + #[Route(path: '/export/{category}.{format}', name: 'export_entries', methods: ['GET'], requirements: ['format' => 'epub|pdf|json|xml|txt|csv|md', 'category' => 'all|unread|starred|archive|tag_entries|untagged|search|annotated|same_domain'])] public function downloadEntriesAction(Request $request, EntryRepository $entryRepository, TagRepository $tagRepository, EntriesExport $entriesExport, string $format, string $category, int $entry = 0) { $method = ucfirst($category); diff --git a/src/Controller/FeedController.php b/src/Controller/FeedController.php index 8756f0fbd..b3e8f015d 100644 --- a/src/Controller/FeedController.php +++ b/src/Controller/FeedController.php @@ -28,13 +28,12 @@ class FeedController extends AbstractController /** * Shows unread entries for current user. * - * @Route("/feed/{username}/{token}/unread/{page}", name="unread_feed", methods={"GET"}, defaults={"page"=1, "_format"="xml"}) * @IsGranted("PUBLIC_ACCESS") * * @ParamConverter("user", class="Wallabag\Entity\User", converter="username_feed_token_converter") - * * @return Response */ + #[Route(path: '/feed/{username}/{token}/unread/{page}', name: 'unread_feed', methods: ['GET'], defaults: ['page' => 1, '_format' => 'xml'])] public function showUnreadFeedAction(User $user, $page) { return $this->showEntries('unread', $user, $page); @@ -43,13 +42,12 @@ class FeedController extends AbstractController /** * Shows read entries for current user. * - * @Route("/feed/{username}/{token}/archive/{page}", name="archive_feed", methods={"GET"}, defaults={"page"=1, "_format"="xml"}) * @IsGranted("PUBLIC_ACCESS") * * @ParamConverter("user", class="Wallabag\Entity\User", converter="username_feed_token_converter") - * * @return Response */ + #[Route(path: '/feed/{username}/{token}/archive/{page}', name: 'archive_feed', methods: ['GET'], defaults: ['page' => 1, '_format' => 'xml'])] public function showArchiveFeedAction(User $user, $page) { return $this->showEntries('archive', $user, $page); @@ -58,13 +56,12 @@ class FeedController extends AbstractController /** * Shows starred entries for current user. * - * @Route("/feed/{username}/{token}/starred/{page}", name="starred_feed", methods={"GET"}, defaults={"page"=1, "_format"="xml"}) * @IsGranted("PUBLIC_ACCESS") * * @ParamConverter("user", class="Wallabag\Entity\User", converter="username_feed_token_converter") - * * @return Response */ + #[Route(path: '/feed/{username}/{token}/starred/{page}', name: 'starred_feed', methods: ['GET'], defaults: ['page' => 1, '_format' => 'xml'])] public function showStarredFeedAction(User $user, $page) { return $this->showEntries('starred', $user, $page); @@ -73,13 +70,12 @@ class FeedController extends AbstractController /** * Shows all entries for current user. * - * @Route("/feed/{username}/{token}/all/{page}", name="all_feed", methods={"GET"}, defaults={"page"=1, "_format"="xml"}) * @IsGranted("PUBLIC_ACCESS") * * @ParamConverter("user", class="Wallabag\Entity\User", converter="username_feed_token_converter") - * * @return Response */ + #[Route(path: '/feed/{username}/{token}/all/{page}', name: 'all_feed', methods: ['GET'], defaults: ['page' => 1, '_format' => 'xml'])] public function showAllFeedAction(User $user, $page) { return $this->showEntries('all', $user, $page); @@ -88,14 +84,13 @@ class FeedController extends AbstractController /** * Shows entries associated to a tag for current user. * - * @Route("/feed/{username}/{token}/tags/{slug}/{page}", name="tag_feed", methods={"GET"}, defaults={"page"=1, "_format"="xml"}) * @IsGranted("PUBLIC_ACCESS") * * @ParamConverter("user", class="Wallabag\Entity\User", converter="username_feed_token_converter") * @ParamConverter("tag", options={"mapping": {"slug": "slug"}}) - * * @return Response */ + #[Route(path: '/feed/{username}/{token}/tags/{slug}/{page}', name: 'tag_feed', methods: ['GET'], defaults: ['page' => 1, '_format' => 'xml'])] public function showTagsFeedAction(Request $request, User $user, Tag $tag, PreparePagerForEntries $preparePagerForEntries, $page) { $sort = $request->query->get('sort', 'created'); diff --git a/src/Controller/IgnoreOriginInstanceRuleController.php b/src/Controller/IgnoreOriginInstanceRuleController.php index 39029311c..d4c7d2156 100644 --- a/src/Controller/IgnoreOriginInstanceRuleController.php +++ b/src/Controller/IgnoreOriginInstanceRuleController.php @@ -29,9 +29,9 @@ class IgnoreOriginInstanceRuleController extends AbstractController /** * Lists all IgnoreOriginInstanceRule entities. * - * @Route("/ignore-origin-instance-rules", name="ignore_origin_instance_rules_index", methods={"GET"}) * @IsGranted("LIST_IGNORE_ORIGIN_INSTANCE_RULES") */ + #[Route(path: '/ignore-origin-instance-rules', name: 'ignore_origin_instance_rules_index', methods: ['GET'])] public function indexAction(IgnoreOriginInstanceRuleRepository $repository) { $rules = $repository->findAll(); @@ -44,11 +44,10 @@ class IgnoreOriginInstanceRuleController extends AbstractController /** * Creates a new ignore origin instance rule entity. * - * @Route("/ignore-origin-instance-rules/new", name="ignore_origin_instance_rules_new", methods={"GET", "POST"}) * @IsGranted("CREATE_IGNORE_ORIGIN_INSTANCE_RULES") - * * @return Response */ + #[Route(path: '/ignore-origin-instance-rules/new', name: 'ignore_origin_instance_rules_new', methods: ['GET', 'POST'])] public function newAction(Request $request) { $ignoreOriginInstanceRule = new IgnoreOriginInstanceRule(); @@ -77,11 +76,10 @@ class IgnoreOriginInstanceRuleController extends AbstractController /** * Displays a form to edit an existing ignore origin instance rule entity. * - * @Route("/ignore-origin-instance-rules/{id}/edit", name="ignore_origin_instance_rules_edit", methods={"GET", "POST"}) * @IsGranted("EDIT", subject="ignoreOriginInstanceRule") - * * @return Response */ + #[Route(path: '/ignore-origin-instance-rules/{id}/edit', name: 'ignore_origin_instance_rules_edit', methods: ['GET', 'POST'])] public function editAction(Request $request, IgnoreOriginInstanceRule $ignoreOriginInstanceRule) { $deleteForm = $this->createDeleteForm($ignoreOriginInstanceRule); @@ -110,11 +108,10 @@ class IgnoreOriginInstanceRuleController extends AbstractController /** * Deletes a site credential entity. * - * @Route("/ignore-origin-instance-rules/{id}", name="ignore_origin_instance_rules_delete", methods={"DELETE"}) * @IsGranted("DELETE", subject="ignoreOriginInstanceRule") - * * @return RedirectResponse */ + #[Route(path: '/ignore-origin-instance-rules/{id}', name: 'ignore_origin_instance_rules_delete', methods: ['DELETE'])] public function deleteAction(Request $request, IgnoreOriginInstanceRule $ignoreOriginInstanceRule) { $form = $this->createDeleteForm($ignoreOriginInstanceRule); diff --git a/src/Controller/Import/BrowserController.php b/src/Controller/Import/BrowserController.php index 8cf1bd5ab..594da2c7d 100644 --- a/src/Controller/Import/BrowserController.php +++ b/src/Controller/Import/BrowserController.php @@ -14,11 +14,10 @@ use Wallabag\Import\ImportInterface; abstract class BrowserController extends AbstractController { /** - * @Route("/import/browser", name="import_browser", methods={"GET", "POST"}) * @IsGranted("IMPORT_ENTRIES") - * * @return Response */ + #[Route(path: '/import/browser', name: 'import_browser', methods: ['GET', 'POST'])] public function indexAction(Request $request, TranslatorInterface $translator) { $form = $this->createForm(UploadImportType::class); diff --git a/src/Controller/Import/ChromeController.php b/src/Controller/Import/ChromeController.php index b579d6196..60dd549e1 100644 --- a/src/Controller/Import/ChromeController.php +++ b/src/Controller/Import/ChromeController.php @@ -22,9 +22,9 @@ class ChromeController extends BrowserController } /** - * @Route("/import/chrome", name="import_chrome", methods={"GET", "POST"}) * @IsGranted("IMPORT_ENTRIES") */ + #[Route(path: '/import/chrome', name: 'import_chrome', methods: ['GET', 'POST'])] public function indexAction(Request $request, TranslatorInterface $translator) { return parent::indexAction($request, $translator); diff --git a/src/Controller/Import/DeliciousController.php b/src/Controller/Import/DeliciousController.php index 20fb5d892..9c34852e0 100644 --- a/src/Controller/Import/DeliciousController.php +++ b/src/Controller/Import/DeliciousController.php @@ -22,9 +22,9 @@ class DeliciousController extends AbstractController } /** - * @Route("/import/delicious", name="import_delicious", methods={"GET", "POST"}) * @IsGranted("IMPORT_ENTRIES") */ + #[Route(path: '/import/delicious', name: 'import_delicious', methods: ['GET', 'POST'])] public function indexAction(Request $request, DeliciousImport $delicious, Config $craueConfig, TranslatorInterface $translator) { $form = $this->createForm(UploadImportType::class); diff --git a/src/Controller/Import/ElcuratorController.php b/src/Controller/Import/ElcuratorController.php index 595fa20b0..9e125d167 100644 --- a/src/Controller/Import/ElcuratorController.php +++ b/src/Controller/Import/ElcuratorController.php @@ -22,9 +22,9 @@ class ElcuratorController extends WallabagController } /** - * @Route("/import/elcurator", name="import_elcurator", methods={"GET", "POST"}) * @IsGranted("IMPORT_ENTRIES") */ + #[Route(path: '/import/elcurator', name: 'import_elcurator', methods: ['GET', 'POST'])] public function indexAction(Request $request, TranslatorInterface $translator) { return parent::indexAction($request, $translator); diff --git a/src/Controller/Import/FirefoxController.php b/src/Controller/Import/FirefoxController.php index c65447c44..054a1c42e 100644 --- a/src/Controller/Import/FirefoxController.php +++ b/src/Controller/Import/FirefoxController.php @@ -22,9 +22,9 @@ class FirefoxController extends BrowserController } /** - * @Route("/import/firefox", name="import_firefox", methods={"GET", "POST"}) * @IsGranted("IMPORT_ENTRIES") */ + #[Route(path: '/import/firefox', name: 'import_firefox', methods: ['GET', 'POST'])] public function indexAction(Request $request, TranslatorInterface $translator) { return parent::indexAction($request, $translator); diff --git a/src/Controller/Import/HtmlController.php b/src/Controller/Import/HtmlController.php index a8e24a892..5aad57026 100644 --- a/src/Controller/Import/HtmlController.php +++ b/src/Controller/Import/HtmlController.php @@ -14,11 +14,10 @@ use Wallabag\Import\ImportInterface; abstract class HtmlController extends AbstractController { /** - * @Route("/import/html", name="import_html", methods={"GET", "POST"}) * @IsGranted("IMPORT_ENTRIES") - * * @return Response */ + #[Route(path: '/import/html', name: 'import_html', methods: ['GET', 'POST'])] public function indexAction(Request $request, TranslatorInterface $translator) { $form = $this->createForm(UploadImportType::class); diff --git a/src/Controller/Import/ImportController.php b/src/Controller/Import/ImportController.php index dbdbd6377..bd1d1bd2e 100644 --- a/src/Controller/Import/ImportController.php +++ b/src/Controller/Import/ImportController.php @@ -20,9 +20,9 @@ class ImportController extends AbstractController } /** - * @Route("/import/", name="import", methods={"GET"}) * @IsGranted("IMPORT_ENTRIES") */ + #[Route(path: '/import/', name: 'import', methods: ['GET'])] public function importAction(ImportChain $importChain) { return $this->render('Import/index.html.twig', [ diff --git a/src/Controller/Import/InstapaperController.php b/src/Controller/Import/InstapaperController.php index 88a62c1e7..946e40637 100644 --- a/src/Controller/Import/InstapaperController.php +++ b/src/Controller/Import/InstapaperController.php @@ -22,9 +22,9 @@ class InstapaperController extends AbstractController } /** - * @Route("/import/instapaper", name="import_instapaper", methods={"GET", "POST"}) * @IsGranted("IMPORT_ENTRIES") */ + #[Route(path: '/import/instapaper', name: 'import_instapaper', methods: ['GET', 'POST'])] public function indexAction(Request $request, InstapaperImport $instapaper, Config $craueConfig, TranslatorInterface $translator) { $form = $this->createForm(UploadImportType::class); diff --git a/src/Controller/Import/OmnivoreController.php b/src/Controller/Import/OmnivoreController.php index 3101a99fe..4f13c61f2 100644 --- a/src/Controller/Import/OmnivoreController.php +++ b/src/Controller/Import/OmnivoreController.php @@ -22,9 +22,9 @@ class OmnivoreController extends AbstractController } /** - * @Route("/import/omnivore", name="import_omnivore", methods={"GET", "POST"}) * @IsGranted("IMPORT_ENTRIES") */ + #[Route(path: '/import/omnivore', name: 'import_omnivore', methods: ['GET', 'POST'])] public function indexAction(Request $request, OmnivoreImport $omnivore, Config $craueConfig, TranslatorInterface $translator) { $form = $this->createForm(UploadImportType::class); diff --git a/src/Controller/Import/PinboardController.php b/src/Controller/Import/PinboardController.php index 1ac75bd75..42ce78aee 100644 --- a/src/Controller/Import/PinboardController.php +++ b/src/Controller/Import/PinboardController.php @@ -22,9 +22,9 @@ class PinboardController extends AbstractController } /** - * @Route("/import/pinboard", name="import_pinboard", methods={"GET", "POST"}) * @IsGranted("IMPORT_ENTRIES") */ + #[Route(path: '/import/pinboard', name: 'import_pinboard', methods: ['GET', 'POST'])] public function indexAction(Request $request, PinboardImport $pinboard, Config $craueConfig, TranslatorInterface $translator) { $form = $this->createForm(UploadImportType::class); diff --git a/src/Controller/Import/PocketController.php b/src/Controller/Import/PocketController.php index 7cd0ec06c..5bad8049d 100644 --- a/src/Controller/Import/PocketController.php +++ b/src/Controller/Import/PocketController.php @@ -26,9 +26,9 @@ class PocketController extends AbstractController } /** - * @Route("/import/pocket", name="import_pocket", methods={"GET"}) * @IsGranted("IMPORT_ENTRIES") */ + #[Route(path: '/import/pocket', name: 'import_pocket', methods: ['GET'])] public function indexAction(PocketImport $pocketImport) { $pocket = $this->getPocketImportService($pocketImport); @@ -48,9 +48,9 @@ class PocketController extends AbstractController } /** - * @Route("/import/pocket/auth", name="import_pocket_auth", methods={"POST"}) * @IsGranted("IMPORT_ENTRIES") */ + #[Route(path: '/import/pocket/auth', name: 'import_pocket_auth', methods: ['POST'])] public function authAction(Request $request, PocketImport $pocketImport) { $requestToken = $this->getPocketImportService($pocketImport) @@ -79,9 +79,9 @@ class PocketController extends AbstractController } /** - * @Route("/import/pocket/callback", name="import_pocket_callback", methods={"GET"}) * @IsGranted("IMPORT_ENTRIES") */ + #[Route(path: '/import/pocket/callback', name: 'import_pocket_callback', methods: ['GET'])] public function callbackAction(PocketImport $pocketImport, TranslatorInterface $translator) { $message = 'flashes.import.notice.failed'; diff --git a/src/Controller/Import/PocketHtmlController.php b/src/Controller/Import/PocketHtmlController.php index 1f9db0b06..6d47b95c6 100644 --- a/src/Controller/Import/PocketHtmlController.php +++ b/src/Controller/Import/PocketHtmlController.php @@ -22,9 +22,9 @@ class PocketHtmlController extends HtmlController } /** - * @Route("/import/pocket_html", name="import_pocket_html", methods={"GET", "POST"}) * @IsGranted("IMPORT_ENTRIES") */ + #[Route(path: '/import/pocket_html', name: 'import_pocket_html', methods: ['GET', 'POST'])] public function indexAction(Request $request, TranslatorInterface $translator) { return parent::indexAction($request, $translator); diff --git a/src/Controller/Import/ReadabilityController.php b/src/Controller/Import/ReadabilityController.php index 4af63f5ae..ee0575cfc 100644 --- a/src/Controller/Import/ReadabilityController.php +++ b/src/Controller/Import/ReadabilityController.php @@ -22,9 +22,9 @@ class ReadabilityController extends AbstractController } /** - * @Route("/import/readability", name="import_readability", methods={"GET", "POST"}) * @IsGranted("IMPORT_ENTRIES") */ + #[Route(path: '/import/readability', name: 'import_readability', methods: ['GET', 'POST'])] public function indexAction(Request $request, ReadabilityImport $readability, Config $craueConfig, TranslatorInterface $translator) { $form = $this->createForm(UploadImportType::class); diff --git a/src/Controller/Import/ShaarliController.php b/src/Controller/Import/ShaarliController.php index b936d0251..a10b94193 100644 --- a/src/Controller/Import/ShaarliController.php +++ b/src/Controller/Import/ShaarliController.php @@ -22,9 +22,9 @@ class ShaarliController extends HtmlController } /** - * @Route("/import/shaarli", name="import_shaarli", methods={"GET", "POST"}) * @IsGranted("IMPORT_ENTRIES") */ + #[Route(path: '/import/shaarli', name: 'import_shaarli', methods: ['GET', 'POST'])] public function indexAction(Request $request, TranslatorInterface $translator) { return parent::indexAction($request, $translator); diff --git a/src/Controller/Import/WallabagV1Controller.php b/src/Controller/Import/WallabagV1Controller.php index 47f4c74c5..93d9192b3 100644 --- a/src/Controller/Import/WallabagV1Controller.php +++ b/src/Controller/Import/WallabagV1Controller.php @@ -22,9 +22,9 @@ class WallabagV1Controller extends WallabagController } /** - * @Route("/import/wallabag-v1", name="import_wallabag_v1", methods={"GET", "POST"}) * @IsGranted("IMPORT_ENTRIES") */ + #[Route(path: '/import/wallabag-v1', name: 'import_wallabag_v1', methods: ['GET', 'POST'])] public function indexAction(Request $request, TranslatorInterface $translator) { return parent::indexAction($request, $translator); diff --git a/src/Controller/Import/WallabagV2Controller.php b/src/Controller/Import/WallabagV2Controller.php index d185cae0b..9cba58c91 100644 --- a/src/Controller/Import/WallabagV2Controller.php +++ b/src/Controller/Import/WallabagV2Controller.php @@ -22,9 +22,9 @@ class WallabagV2Controller extends WallabagController } /** - * @Route("/import/wallabag-v2", name="import_wallabag_v2", methods={"GET", "POST"}) * @IsGranted("IMPORT_ENTRIES") */ + #[Route(path: '/import/wallabag-v2', name: 'import_wallabag_v2', methods: ['GET', 'POST'])] public function indexAction(Request $request, TranslatorInterface $translator) { return parent::indexAction($request, $translator); diff --git a/src/Controller/SiteCredentialController.php b/src/Controller/SiteCredentialController.php index 7f60d692a..0a9a648ee 100644 --- a/src/Controller/SiteCredentialController.php +++ b/src/Controller/SiteCredentialController.php @@ -34,9 +34,9 @@ class SiteCredentialController extends AbstractController /** * Lists all User entities. * - * @Route("/site-credentials", name="site_credentials_index", methods={"GET"}) * @IsGranted("LIST_SITE_CREDENTIALS") */ + #[Route(path: '/site-credentials', name: 'site_credentials_index', methods: ['GET'])] public function indexAction(SiteCredentialRepository $repository) { $this->isSiteCredentialsEnabled(); @@ -51,11 +51,10 @@ class SiteCredentialController extends AbstractController /** * Creates a new site credential entity. * - * @Route("/site-credentials/new", name="site_credentials_new", methods={"GET", "POST"}) * @IsGranted("CREATE_SITE_CREDENTIALS") - * * @return Response */ + #[Route(path: '/site-credentials/new', name: 'site_credentials_new', methods: ['GET', 'POST'])] public function newAction(Request $request) { $this->isSiteCredentialsEnabled(); @@ -89,11 +88,10 @@ class SiteCredentialController extends AbstractController /** * Displays a form to edit an existing site credential entity. * - * @Route("/site-credentials/{id}/edit", name="site_credentials_edit", methods={"GET", "POST"}) * @IsGranted("EDIT", subject="siteCredential") - * * @return Response */ + #[Route(path: '/site-credentials/{id}/edit', name: 'site_credentials_edit', methods: ['GET', 'POST'])] public function editAction(Request $request, SiteCredential $siteCredential) { $this->isSiteCredentialsEnabled(); @@ -127,11 +125,10 @@ class SiteCredentialController extends AbstractController /** * Deletes a site credential entity. * - * @Route("/site-credentials/{id}", name="site_credentials_delete", methods={"DELETE"}) * @IsGranted("DELETE", subject="siteCredential") - * * @return RedirectResponse */ + #[Route(path: '/site-credentials/{id}', name: 'site_credentials_delete', methods: ['DELETE'])] public function deleteAction(Request $request, SiteCredential $siteCredential) { $this->isSiteCredentialsEnabled(); diff --git a/src/Controller/StaticController.php b/src/Controller/StaticController.php index 2411ef849..7f7700bed 100644 --- a/src/Controller/StaticController.php +++ b/src/Controller/StaticController.php @@ -8,9 +8,9 @@ use Symfony\Component\Routing\Annotation\Route; class StaticController extends AbstractController { /** - * @Route("/howto", name="howto", methods={"GET"}) * @IsGranted("IS_AUTHENTICATED_FULLY") */ + #[Route(path: '/howto', name: 'howto', methods: ['GET'])] public function howtoAction() { $addonsUrl = $this->getParameter('addons_url'); @@ -24,9 +24,9 @@ class StaticController extends AbstractController } /** - * @Route("/about", name="about", methods={"GET"}) * @IsGranted("IS_AUTHENTICATED_FULLY") */ + #[Route(path: '/about', name: 'about', methods: ['GET'])] public function aboutAction() { return $this->render( @@ -39,9 +39,9 @@ class StaticController extends AbstractController } /** - * @Route("/quickstart", name="quickstart", methods={"GET"}) * @IsGranted("IS_AUTHENTICATED_FULLY") */ + #[Route(path: '/quickstart', name: 'quickstart', methods: ['GET'])] public function quickstartAction() { return $this->render( diff --git a/src/Controller/TagController.php b/src/Controller/TagController.php index 97854edbf..2c7c837ef 100644 --- a/src/Controller/TagController.php +++ b/src/Controller/TagController.php @@ -34,11 +34,10 @@ class TagController extends AbstractController } /** - * @Route("/new-tag/{entry}", name="new_tag", methods={"POST"}, requirements={"entry" = "\d+"}) * @IsGranted("TAG", subject="entry") - * * @return Response */ + #[Route(path: '/new-tag/{entry}', name: 'new_tag', methods: ['POST'], requirements: ['entry' => '\d+'])] public function addTagFormAction(Request $request, Entry $entry, TranslatorInterface $translator) { $form = $this->createForm(NewTagType::class, new Tag()); @@ -84,11 +83,10 @@ class TagController extends AbstractController /** * Removes tag from entry. * - * @Route("/remove-tag/{entry}/{tag}", name="remove_tag", methods={"GET"}, requirements={"entry" = "\d+", "tag" = "\d+"}) * @IsGranted("UNTAG", subject="entry") - * * @return Response */ + #[Route(path: '/remove-tag/{entry}/{tag}', name: 'remove_tag', methods: ['GET'], requirements: ['entry' => '\d+', 'tag' => '\d+'])] public function removeTagFromEntry(Request $request, Entry $entry, Tag $tag) { $entry->removeTag($tag); @@ -108,11 +106,10 @@ class TagController extends AbstractController /** * Shows tags for current user. * - * @Route("/tag/list", name="tag", methods={"GET"}) * @IsGranted("LIST_TAGS") - * * @return Response */ + #[Route(path: '/tag/list', name: 'tag', methods: ['GET'])] public function showTagAction(TagRepository $tagRepository, EntryRepository $entryRepository) { $allTagsWithNbEntries = $tagRepository->findAllTagsWithNbEntries($this->getUser()->getId()); @@ -133,13 +130,12 @@ class TagController extends AbstractController /** * @param int $page * - * @Route("/tag/list/{slug}/{page}", name="tag_entries", methods={"GET"}, defaults={"page" = "1"}) * @ParamConverter("tag", options={"mapping": {"slug": "slug"}}) * @IsGranted("LIST_ENTRIES") * @IsGranted("VIEW", subject="tag") - * * @return Response */ + #[Route(path: '/tag/list/{slug}/{page}', name: 'tag_entries', methods: ['GET'], defaults: ['page' => '1'])] public function showEntriesForTagAction(Tag $tag, EntryRepository $entryRepository, PreparePagerForEntries $preparePagerForEntries, $page, Request $request) { $entriesByTag = $entryRepository->findAllByTagId( @@ -174,12 +170,11 @@ class TagController extends AbstractController * Rename a given tag with a new label * Create a new tag with the new name and drop the old one. * - * @Route("/tag/rename/{slug}", name="tag_rename", methods={"POST"}) * @ParamConverter("tag", options={"mapping": {"slug": "slug"}}) * @IsGranted("EDIT", subject="tag") - * * @return Response */ + #[Route(path: '/tag/rename/{slug}', name: 'tag_rename', methods: ['POST'])] public function renameTagAction(Tag $tag, Request $request, TagRepository $tagRepository, EntryRepository $entryRepository) { $form = $this->createForm(RenameTagType::class, new Tag()); @@ -228,11 +223,10 @@ class TagController extends AbstractController /** * Tag search results with the current search term. * - * @Route("/tag/search/{filter}", name="tag_this_search", methods={"GET"}) * @IsGranted("CREATE_TAGS") - * * @return Response */ + #[Route(path: '/tag/search/{filter}', name: 'tag_this_search', methods: ['GET'])] public function tagThisSearchAction($filter, Request $request, EntryRepository $entryRepository) { $currentRoute = $request->query->has('currentRoute') ? $request->query->get('currentRoute') : ''; @@ -264,12 +258,11 @@ class TagController extends AbstractController /** * Delete a given tag for the current user. * - * @Route("/tag/delete/{slug}", name="tag_delete", methods={"GET"}) * @ParamConverter("tag", options={"mapping": {"slug": "slug"}}) * @IsGranted("DELETE", subject="tag") - * * @return Response */ + #[Route(path: '/tag/delete/{slug}', name: 'tag_delete', methods: ['GET'])] public function removeTagAction(Tag $tag, Request $request, EntryRepository $entryRepository) { foreach ($tag->getEntriesByUserId($this->getUser()->getId()) as $entry) { diff --git a/src/Controller/UserController.php b/src/Controller/UserController.php index 74af9c3ed..880876879 100644 --- a/src/Controller/UserController.php +++ b/src/Controller/UserController.php @@ -38,9 +38,9 @@ class UserController extends AbstractController /** * Creates a new User entity. * - * @Route("/users/new", name="user_new", methods={"GET", "POST"}) * @IsGranted("CREATE_USERS") */ + #[Route(path: '/users/new', name: 'user_new', methods: ['GET', 'POST'])] public function newAction(Request $request, UserManagerInterface $userManager, EventDispatcherInterface $eventDispatcher) { $user = $userManager->createUser(); @@ -75,9 +75,9 @@ class UserController extends AbstractController /** * Displays a form to edit an existing User entity. * - * @Route("/users/{id}/edit", name="user_edit", methods={"GET", "POST"}) * @IsGranted("EDIT", subject="user") */ + #[Route(path: '/users/{id}/edit', name: 'user_edit', methods: ['GET', 'POST'])] public function editAction(Request $request, User $user, UserManagerInterface $userManager, GoogleAuthenticatorInterface $googleAuthenticator) { $deleteForm = $this->createDeleteForm($user); @@ -118,9 +118,9 @@ class UserController extends AbstractController /** * Deletes a User entity. * - * @Route("/users/{id}", name="user_delete", methods={"DELETE"}) * @IsGranted("DELETE", subject="user") */ + #[Route(path: '/users/{id}', name: 'user_delete', methods: ['DELETE'])] public function deleteAction(Request $request, User $user) { $form = $this->createDeleteForm($user); @@ -142,14 +142,13 @@ class UserController extends AbstractController /** * @param int $page * - * @Route("/users/list/{page}", name="user_index", methods={"GET"}, defaults={"page" = 1}) * @IsGranted("LIST_USERS") * * Default parameter for page is hardcoded (in duplication of the defaults from the Route) * because this controller is also called inside the layout template without any page as argument - * * @return Response */ + #[Route(path: '/users/list/{page}', name: 'user_index', methods: ['GET'], defaults: ['page' => 1])] public function searchFormAction(Request $request, UserRepository $userRepository, $page = 1) { $qb = $userRepository->createQueryBuilder('u'); diff --git a/src/Entity/Annotation.php b/src/Entity/Annotation.php index d816aac46..895dae452 100644 --- a/src/Entity/Annotation.php +++ b/src/Entity/Annotation.php @@ -55,14 +55,10 @@ class Annotation /** * @var string * - * @Assert\Length( - * max = 10000, - * maxMessage = "validator.quote_length_too_high" - * ) - * * @Groups({"entries_for_user", "export_all"}) */ #[ORM\Column(name: 'quote', type: 'text')] + #[Assert\Length(max: 10000, maxMessage: 'validator.quote_length_too_high')] private $quote; /** diff --git a/src/Entity/Config.php b/src/Entity/Config.php index 43d185a83..3913232b2 100644 --- a/src/Entity/Config.php +++ b/src/Entity/Config.php @@ -32,26 +32,20 @@ class Config /** * @var int * - * @Assert\NotBlank() - * @Assert\Range( - * min = 1, - * max = 100000, - * maxMessage = "validator.item_per_page_too_high" - * ) - * * @Groups({"config_api"}) */ #[ORM\Column(name: 'items_per_page', type: 'integer', nullable: false)] + #[Assert\NotBlank] + #[Assert\Range(min: 1, max: 100000, maxMessage: 'validator.item_per_page_too_high')] private $itemsPerPage; /** * @var string * - * @Assert\NotBlank() - * * @Groups({"config_api"}) */ #[ORM\Column(name: 'language', type: 'string', nullable: false)] + #[Assert\NotBlank] private $language; /** @@ -65,14 +59,10 @@ class Config /** * @var int|null * - * @Assert\Range( - * min = 1, - * max = 100000, - * maxMessage = "validator.feed_limit_too_high" - * ) * @Groups({"config_api"}) */ #[ORM\Column(name: 'feed_limit', type: 'integer', nullable: true)] + #[Assert\Range(min: 1, max: 100000, maxMessage: 'validator.feed_limit_too_high')] private $feedLimit; /** diff --git a/src/Entity/Entry.php b/src/Entity/Entry.php index fa348df93..c354a2e1a 100644 --- a/src/Entity/Entry.php +++ b/src/Entity/Entry.php @@ -68,14 +68,11 @@ class Entry * * @var string|null * - * @Assert\NotBlank() - * @Assert\Url( - * message = "The url '{{ value }}' is not a valid url", - * ) - * * @Groups({"entries_for_user", "export_all"}) */ #[ORM\Column(name: 'url', type: 'text', nullable: true)] + #[Assert\NotBlank] + #[Assert\Url(message: "The url '{{ value }}' is not a valid url")] private $url; /** diff --git a/src/Entity/IgnoreOriginInstanceRule.php b/src/Entity/IgnoreOriginInstanceRule.php index 68cd8eab6..d0c1cce31 100644 --- a/src/Entity/IgnoreOriginInstanceRule.php +++ b/src/Entity/IgnoreOriginInstanceRule.php @@ -25,14 +25,14 @@ class IgnoreOriginInstanceRule implements IgnoreOriginRuleInterface, RuleInterfa /** * @var string * - * @Assert\NotBlank() - * @Assert\Length(max=255) * @RulerZAssert\ValidRule( * allowed_variables={"host","_all"}, * allowed_operators={"=","~"} * ) */ #[ORM\Column(name: 'rule', type: 'string', nullable: false)] + #[Assert\NotBlank] + #[Assert\Length(max: 255)] private $rule; /** diff --git a/src/Entity/IgnoreOriginUserRule.php b/src/Entity/IgnoreOriginUserRule.php index 2202c48c8..58af49d82 100644 --- a/src/Entity/IgnoreOriginUserRule.php +++ b/src/Entity/IgnoreOriginUserRule.php @@ -25,14 +25,14 @@ class IgnoreOriginUserRule implements IgnoreOriginRuleInterface, RuleInterface /** * @var string * - * @Assert\NotBlank() - * @Assert\Length(max=255) * @RulerZAssert\ValidRule( * allowed_variables={"host","_all"}, * allowed_operators={"=","~"} * ) */ #[ORM\Column(name: 'rule', type: 'string', nullable: false)] + #[Assert\NotBlank] + #[Assert\Length(max: 255)] private $rule; #[ORM\JoinColumn(nullable: false)] diff --git a/src/Entity/SiteCredential.php b/src/Entity/SiteCredential.php index 2a125181c..4ea007844 100644 --- a/src/Entity/SiteCredential.php +++ b/src/Entity/SiteCredential.php @@ -27,27 +27,24 @@ class SiteCredential /** * @var string - * - * @Assert\NotBlank() - * @Assert\Length(max=255) */ #[ORM\Column(name: 'host', type: 'string', length: 255)] + #[Assert\NotBlank] + #[Assert\Length(max: 255)] private $host; /** * @var string - * - * @Assert\NotBlank() */ #[ORM\Column(name: 'username', type: 'text')] + #[Assert\NotBlank] private $username; /** * @var string - * - * @Assert\NotBlank() */ #[ORM\Column(name: 'password', type: 'text')] + #[Assert\NotBlank] private $password; /** diff --git a/src/Entity/TaggingRule.php b/src/Entity/TaggingRule.php index f9d07d66b..18505c096 100644 --- a/src/Entity/TaggingRule.php +++ b/src/Entity/TaggingRule.php @@ -30,8 +30,6 @@ class TaggingRule implements RuleInterface /** * @var string * - * @Assert\NotBlank() - * @Assert\Length(max=255) * @RulerZAssert\ValidRule( * allowed_variables={"title", "url", "isArchived", "isStarred", "content", "language", "mimetype", "readingTime", "domainName"}, * allowed_operators={">", "<", ">=", "<=", "=", "is", "!=", "and", "not", "or", "matches", "notmatches"} @@ -40,16 +38,17 @@ class TaggingRule implements RuleInterface * @Groups({"export_tagging_rule"}) */ #[ORM\Column(name: 'rule', type: 'string', nullable: false)] + #[Assert\NotBlank] + #[Assert\Length(max: 255)] private $rule; /** * @var array * - * @Assert\NotBlank() - * * @Groups({"export_tagging_rule"}) */ #[ORM\Column(name: 'tags', type: 'simple_array', nullable: false)] + #[Assert\NotBlank] private $tags = []; /** diff --git a/src/Entity/User.php b/src/Entity/User.php index 752f02da6..7c950a8a5 100644 --- a/src/Entity/User.php +++ b/src/Entity/User.php @@ -22,13 +22,12 @@ use Wallabag\Repository\UserRepository; * User. * * @XmlRoot("user") - * - * @UniqueEntity("email") - * @UniqueEntity("username") */ #[ORM\Table(name: '`user`')] #[ORM\Entity(repositoryClass: UserRepository::class)] #[ORM\HasLifecycleCallbacks] +#[UniqueEntity('email')] +#[UniqueEntity('username')] class User extends BaseUser implements EmailTwoFactorInterface, GoogleTwoFactorInterface, BackupCodeInterface { use EntityTimestampsTrait; diff --git a/src/Import/AbstractImport.php b/src/Import/AbstractImport.php index a51dc49ca..09d551028 100644 --- a/src/Import/AbstractImport.php +++ b/src/Import/AbstractImport.php @@ -7,7 +7,6 @@ use OldSound\RabbitMqBundle\RabbitMq\ProducerInterface; use Psr\Log\LoggerInterface; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Wallabag\Entity\Entry; -use Wallabag\Entity\Tag; use Wallabag\Entity\User; use Wallabag\Event\EntrySavedEvent; use Wallabag\Helper\ContentProxy;