X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FCoreBundle%2FController%2FDeveloperController.php;h=63386db0c31147b7d3c639cf2c3a74a161e7ad94;hb=59ddb9ae99b97a1a8fa3aa3770a4a2afef333699;hp=3b9da318f78cf57a06f7d033d7746ce75abf7cb5;hpb=abc329453be6381bcf4d1b0dfd9f698312ed3b16;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/CoreBundle/Controller/DeveloperController.php b/src/Wallabag/CoreBundle/Controller/DeveloperController.php index 3b9da318..63386db0 100644 --- a/src/Wallabag/CoreBundle/Controller/DeveloperController.php +++ b/src/Wallabag/CoreBundle/Controller/DeveloperController.php @@ -11,19 +11,27 @@ use Wallabag\CoreBundle\Form\Type\ClientType; class DeveloperController extends Controller { /** + * List all clients and link to create a new one. + * * @Route("/developer", name="developer") * * @return \Symfony\Component\HttpFoundation\Response */ public function indexAction() { - return $this->render('WallabagCoreBundle:Developer:index.html.twig'); + $clients = $this->getDoctrine()->getRepository('WallabagApiBundle:Client')->findAll(); + + return $this->render('WallabagCoreBundle:Developer:index.html.twig', [ + 'clients' => $clients, + ]); } /** + * Create a client (an app). + * * @param Request $request * - * @Route("/developer/client/create", name="create_client") + * @Route("/developer/client/create", name="developer_create_client") * * @return \Symfony\Component\HttpFoundation\Response */ @@ -35,28 +43,54 @@ class DeveloperController extends Controller $clientForm->handleRequest($request); if ($clientForm->isValid()) { - $client->setAllowedGrantTypes(array('token', 'authorization_code')); + $client->setAllowedGrantTypes(['token', 'authorization_code', 'password', 'refresh_token']); $em->persist($client); $em->flush(); $this->get('session')->getFlashBag()->add( 'notice', - 'New client created.' + $this->get('translator')->trans('flashes.developer.notice.client_created', ['%name%' => $client->getName()]) ); - return $this->render('WallabagCoreBundle:Developer:client_parameters.html.twig', array( + return $this->render('WallabagCoreBundle:Developer:client_parameters.html.twig', [ 'client_id' => $client->getPublicId(), 'client_secret' => $client->getSecret(), - )); + 'client_name' => $client->getName(), + ]); } - return $this->render('WallabagCoreBundle:Developer:client.html.twig', array( + return $this->render('WallabagCoreBundle:Developer:client.html.twig', [ 'form' => $clientForm->createView(), - )); + ]); } /** - * @Route("/developer/howto/first-app", name="howto-firstapp") + * Remove a client. + * + * @param Client $client + * + * @Route("/developer/client/delete/{id}", requirements={"id" = "\d+"}, name="developer_delete_client") + * + * @return \Symfony\Component\HttpFoundation\RedirectResponse + */ + public function deleteClientAction(Client $client) + { + $em = $this->getDoctrine()->getManager(); + $em->remove($client); + $em->flush(); + + $this->get('session')->getFlashBag()->add( + 'notice', + $this->get('translator')->trans('flashes.developer.notice.client_deleted', ['%name%' => $client->getName()]) + ); + + return $this->redirect($this->generateUrl('developer')); + } + + /** + * Display developer how to use an existing app. + * + * @Route("/developer/howto/first-app", name="developer_howto_firstapp") * * @return \Symfony\Component\HttpFoundation\Response */