X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=src%2FWallabag%2FCoreBundle%2FController%2FDeveloperController.php;h=f3492b74e77831ec1ad280596d0d74b99fcf489f;hb=2ff9991a1dfac0d3463662b96f529aac70c66f76;hp=3cb8688149ede0972893b15a1dd994b83699d530;hpb=24152cdb5e48edc5128082b285736b06ebda3c82;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/CoreBundle/Controller/DeveloperController.php b/src/Wallabag/CoreBundle/Controller/DeveloperController.php index 3cb86881..f3492b74 100644 --- a/src/Wallabag/CoreBundle/Controller/DeveloperController.php +++ b/src/Wallabag/CoreBundle/Controller/DeveloperController.php @@ -5,34 +5,97 @@ namespace Wallabag\CoreBundle\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Component\HttpFoundation\Request; use Symfony\Bundle\FrameworkBundle\Controller\Controller; +use Wallabag\ApiBundle\Entity\Client; +use Wallabag\CoreBundle\Form\Type\ClientType; class DeveloperController extends Controller { /** - * @param Request $request + * List all clients and link to create a new one. * * @Route("/developer", name="developer") + * + * @return \Symfony\Component\HttpFoundation\Response */ - public function indexAction(Request $request) + public function indexAction() { - return $this->render('WallabagCoreBundle:Developer:index.html.twig'); + $clients = $this->getDoctrine()->getRepository('WallabagApiBundle:Client')->findAll(); + + return $this->render('@WallabagCore/themes/common/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 */ public function createClientAction(Request $request) { - $clientManager = $this->container->get('fos_oauth_server.client_manager.default'); - $client = $clientManager->createClient(); - $client->setRedirectUris(array('http://www.example.com')); - $client->setAllowedGrantTypes(array('token', 'authorization_code')); - $clientManager->updateClient($client); - - return $this->render('WallabagCoreBundle:Developer:client.html.twig', array( - 'client_id' => $client->getPublicId(), - )); + $em = $this->getDoctrine()->getManager(); + $client = new Client(); + $clientForm = $this->createForm(ClientType::class, $client); + $clientForm->handleRequest($request); + + if ($clientForm->isValid()) { + $client->setAllowedGrantTypes(['token', 'authorization_code', 'password', 'refresh_token']); + $em->persist($client); + $em->flush(); + + $this->get('session')->getFlashBag()->add( + 'notice', + $this->get('translator')->trans('flashes.developer.notice.client_created', ['%name%' => $client->getName()]) + ); + + return $this->render('@WallabagCore/themes/common/Developer/client_parameters.html.twig', [ + 'client_id' => $client->getPublicId(), + 'client_secret' => $client->getSecret(), + 'client_name' => $client->getName(), + ]); + } + + return $this->render('@WallabagCore/themes/common/Developer/client.html.twig', [ + 'form' => $clientForm->createView(), + ]); + } + + /** + * 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 + */ + public function howtoFirstAppAction() + { + return $this->render('@WallabagCore/themes/common/Developer/howto_app.html.twig'); } }