Я создал блог с системой комментариев и хотел бы, чтобы автор или администратор удалил свой комментарий.
Поэтому я искал в интернете, но нашел только сообщения со ссылкой на Symfony 2/3, и мне было трудно понять.
Итак, я создал свою собственную функцию
/**
* @Route("/blog/commentDelete/{id}-{articleId}-{articleSlug}", name="comment_delete")
*/
public function commentDelete($id, $articleId, $articleSlug, CommentRepository $commentRepository, AuthorizationCheckerInterface $authChecker){
$em = $this->getDoctrine()->getManager();
$comment = $commentRepository->find($id);
$user = $this->getUser();
if ($user->getId() != $comment->getAuthor()->getId() && $authChecker->isGranted('ROLE_MODERATOR') == false ){
throw exception_for("Cette page n'existe pas");
}
$em->remove($comment);
$em->flush();
$this->addFlash('comment_success', 'Commentaire supprimé avec succès');
return $this->redirectToRoute('blog_show', array('id' => $articleId, 'slug' => $articleSlug));
}
На ветке, у меня есть эта ссылка:
<a href="{{ path('comment_delete', {'id': comment.id, 'articleId': article.id, 'articleSlug': article.slug}) }}">Supprimer</a>
Мне нужен идентификатор комментария для действия и идентификатор статьи и статья, чтобы перенаправить пользователя после удаления комментария.
Я проверяю, что лицо, удаляющее комментарий, является автором или модератором.
Однако я слышал, что это абсолютно небезопасно, потому что я должен использовать форму, но я действительно не знаю, как использовать форму в этом случае ... Или, может быть, с помощью JS, чтобы скрыть ссылку для конечного пользователя
Итак, я хотел бы знать, достаточно ли безопасна моя функция или существует ли лучшее решение и как его реализовать?