Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Рефакторинг сервиса работы с ссылками на архивы #9

Closed
foobar1643 opened this issue Apr 30, 2017 · 7 comments

Comments

@foobar1643
Copy link
Collaborator

Сейчас сервис написан с завязкой на глобальные переменные вроде $_POST и $_SERVER, это неправильно, особенно когда у нас проект на фреймворке, который предоставляет абстракции над HTTP запросом и ответом. Так же, на формах добавления\удаления архивных ссылок нет обработки ошибок, если не удалось добавить ссылку происходит просто реддирект на главную.

Нужно сделать:

  • Работать с телом POST запроса через объект Request, не использовать суперглобал $_POST.
  • Убрать проверки на REQUEST_METHOD в сервисе, не использовать суперглобал $_SERVER.
  • Если не удалось добавить ссылку, возвращать массив ошибок, которые потом можно будет отобразить на View.
  • В методе removeLink() передавать ID удаляемой ссылки аргументом, сервис не должен ничего знать про URL и никак не должен с ним работать.
@someApprentice
Copy link
Collaborator

Добавление\удаление ссылок планировалось осуществляться модератором. Предполагалось что модератор должен знать как это работает и допустить ошибку только по случайности, либо злоумышленником через CSRF-уязвимость.

Сейчас пользователей с уровнем модератора как таковых нет - на сайте phpclub.rf.gd просто отключена регистрация. Эта возможность будет добавлена при реализации чата.

Хотя, сейчас я поймал себя на мысли, что, все таки, ошибки должны выводиться и для модераторов.

@foobar1643 foobar1643 added this to the Версия 1.0.0 milestone Jun 29, 2017
@someApprentice
Copy link
Collaborator

@kubk предлагает идею с автоматическим получением ссылок. Предлагаю продолжить обсуждение этого в этой теме.

@kubk
Copy link
Contributor

kubk commented Dec 10, 2017

Ссылка на /chain/ стоит на значке № и хрен догадаешься, что она там есть. Лучше сделать ее более заметной, например, сделав надпись "цепочка сообщений" или как-то еще.

Да. Нужно как-то отделять ссылку на пост, от ссылки на цепочку сообщений. Предлагаю для цепочки использовать иконку из Font Awesome: https://www.w3schools.com/icons/tryit.asp?filename=tryicons_fa-chain

А для поста номер - №1097471

@kubk
Copy link
Contributor

kubk commented Dec 10, 2017

Архивач умеет генерировать ссылки на архив, на основе URL треда на 2ch.hk
С архивом 2ch.hk - проблемней. Там проще всего вбить название треда в поиск (POST запрос), и спарсить оттуда URL нужного треда. Этот код нужно поместить либо в DvachApiClient, либо в отдельный класс.

@someApprentice
Copy link
Collaborator

@kubk в DvachApiClient будет систематичней

@codedokode
Copy link
Contributor

Я тут мимо проходил и хотел обратить внимание, что если использовать Symfony Forms, то там есть защита от CSRF + какая-то валидация + маппинг данных формы на сущности Доктрины. Плюс, там есть код для вывода формы с использованием того же бутстрапа (если речь об админке, то бутстрап хорошее решение). То есть для написания админок самое то.

@kubk
Copy link
Contributor

kubk commented Feb 21, 2018

Нужно добавить поиск тредов в архиве 2ch.hk - и issue можно закрывать.

@kubk kubk self-assigned this Feb 21, 2018
@kubk kubk closed this as completed in 9b09700 Jul 28, 2018
@kubk kubk mentioned this issue Jul 29, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants