X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FCoreBundle%2FController%2FSiteCredentialController.php;h=4320c5ffe35d1e43872cf27128c585f044e53a67;hb=48b0163d247554d7e2f1ec63b717c8216ea9ec59;hp=429f529ab554e73047619c1e1d551503497d1de5;hpb=fc6d92c63dc5629a9e005628e416e0ecf4daa6ed;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/CoreBundle/Controller/SiteCredentialController.php b/src/Wallabag/CoreBundle/Controller/SiteCredentialController.php index 429f529a..4320c5ff 100644 --- a/src/Wallabag/CoreBundle/Controller/SiteCredentialController.php +++ b/src/Wallabag/CoreBundle/Controller/SiteCredentialController.php @@ -2,12 +2,11 @@ namespace Wallabag\CoreBundle\Controller; -use Symfony\Component\HttpFoundation\Request; use Symfony\Bundle\FrameworkBundle\Controller\Controller; -use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; -use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; -use Wallabag\UserBundle\Entity\User; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\Routing\Annotation\Route; use Wallabag\CoreBundle\Entity\SiteCredential; +use Wallabag\UserBundle\Entity\User; /** * SiteCredential controller. @@ -19,60 +18,68 @@ class SiteCredentialController extends Controller /** * Lists all User entities. * - * @Route("/", name="site_credentials_index") - * @Method("GET") + * @Route("/", name="site_credentials_index", methods={"GET"}) */ public function indexAction() { - $em = $this->getDoctrine()->getManager(); + $this->isSiteCredentialsEnabled(); - $credentials = $em->getRepository('WallabagCoreBundle:SiteCredential')->findByUser($this->getUser()); + $credentials = $this->get('wallabag_core.site_credential_repository')->findByUser($this->getUser()); - return $this->render('WallabagCoreBundle:SiteCredential:index.html.twig', array( + return $this->render('WallabagCoreBundle:SiteCredential:index.html.twig', [ 'credentials' => $credentials, - )); + ]); } /** * Creates a new site credential entity. * - * @Route("/new", name="site_credentials_new") - * @Method({"GET", "POST"}) + * @Route("/new", name="site_credentials_new", methods={"GET", "POST"}) + * + * @return \Symfony\Component\HttpFoundation\Response */ public function newAction(Request $request) { + $this->isSiteCredentialsEnabled(); + $credential = new SiteCredential($this->getUser()); $form = $this->createForm('Wallabag\CoreBundle\Form\Type\SiteCredentialType', $credential); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { + $credential->setUsername($this->get('wallabag_core.helper.crypto_proxy')->crypt($credential->getUsername())); + $credential->setPassword($this->get('wallabag_core.helper.crypto_proxy')->crypt($credential->getPassword())); + $em = $this->getDoctrine()->getManager(); $em->persist($credential); - $em->flush($credential); + $em->flush(); $this->get('session')->getFlashBag()->add( 'notice', $this->get('translator')->trans('flashes.site_credential.notice.added', ['%host%' => $credential->getHost()]) ); - return $this->redirectToRoute('site_credentials_edit', array('id' => $credential->getId())); + return $this->redirectToRoute('site_credentials_index'); } - return $this->render('WallabagCoreBundle:SiteCredential:new.html.twig', array( + return $this->render('WallabagCoreBundle:SiteCredential:new.html.twig', [ 'credential' => $credential, 'form' => $form->createView(), - )); + ]); } /** * Displays a form to edit an existing site credential entity. * - * @Route("/{id}/edit", name="site_credentials_edit") - * @Method({"GET", "POST"}) + * @Route("/{id}/edit", name="site_credentials_edit", methods={"GET", "POST"}) + * + * @return \Symfony\Component\HttpFoundation\Response */ public function editAction(Request $request, SiteCredential $siteCredential) { + $this->isSiteCredentialsEnabled(); + $this->checkUserAction($siteCredential); $deleteForm = $this->createDeleteForm($siteCredential); @@ -80,6 +87,9 @@ class SiteCredentialController extends Controller $editForm->handleRequest($request); if ($editForm->isSubmitted() && $editForm->isValid()) { + $siteCredential->setUsername($this->get('wallabag_core.helper.crypto_proxy')->crypt($siteCredential->getUsername())); + $siteCredential->setPassword($this->get('wallabag_core.helper.crypto_proxy')->crypt($siteCredential->getPassword())); + $em = $this->getDoctrine()->getManager(); $em->persist($siteCredential); $em->flush(); @@ -89,24 +99,27 @@ class SiteCredentialController extends Controller $this->get('translator')->trans('flashes.site_credential.notice.updated', ['%host%' => $siteCredential->getHost()]) ); - return $this->redirectToRoute('site_credentials_edit', array('id' => $siteCredential->getId())); + return $this->redirectToRoute('site_credentials_index'); } - return $this->render('WallabagCoreBundle:SiteCredential:edit.html.twig', array( + return $this->render('WallabagCoreBundle:SiteCredential:edit.html.twig', [ 'credential' => $siteCredential, 'edit_form' => $editForm->createView(), 'delete_form' => $deleteForm->createView(), - )); + ]); } /** * Deletes a site credential entity. * - * @Route("/{id}", name="site_credentials_delete") - * @Method("DELETE") + * @Route("/{id}", name="site_credentials_delete", methods={"DELETE"}) + * + * @return \Symfony\Component\HttpFoundation\RedirectResponse */ public function deleteAction(Request $request, SiteCredential $siteCredential) { + $this->isSiteCredentialsEnabled(); + $this->checkUserAction($siteCredential); $form = $this->createDeleteForm($siteCredential); @@ -126,6 +139,16 @@ class SiteCredentialController extends Controller return $this->redirectToRoute('site_credentials_index'); } + /** + * Throw a 404 if the feature is disabled. + */ + private function isSiteCredentialsEnabled() + { + if (!$this->get('craue_config')->get('restricted_access')) { + throw $this->createNotFoundException('Feature "restricted_access" is disabled, controllers too.'); + } + } + /** * Creates a form to delete a site credential entity. * @@ -136,7 +159,7 @@ class SiteCredentialController extends Controller private function createDeleteForm(SiteCredential $siteCredential) { return $this->createFormBuilder() - ->setAction($this->generateUrl('site_credentials_delete', array('id' => $siteCredential->getId()))) + ->setAction($this->generateUrl('site_credentials_delete', ['id' => $siteCredential->getId()])) ->setMethod('DELETE') ->getForm() ; @@ -149,7 +172,7 @@ class SiteCredentialController extends Controller */ private function checkUserAction(SiteCredential $siteCredential) { - if (null === $this->getUser() || $this->getUser()->getId() != $siteCredential->getUser()->getId()) { + if (null === $this->getUser() || $this->getUser()->getId() !== $siteCredential->getUser()->getId()) { throw $this->createAccessDeniedException('You can not access this site credential.'); } }