share(function (PhraseaApplication $app) { return (new OAuth2Controller($app)) ->setDispatcher($app['dispatcher']); }); } public function boot(Application $app) { } public function connect(Application $app) { $firewall = $this->getFirewall($app); $requireUnauthenticated = function () use ($firewall) { if (null !== $response = $firewall->requireNotAuthenticated()) { return $response; } return null; }; if (! $this->isApiEnabled($app)) { return $app['controllers_factory']; } /** @var ControllerCollection $controllers */ $controllers = $app['controllers_factory']; $controllers->match('/authorize', 'controller.oauth2:authorizeAction') ->method('GET|POST') ->bind('oauth2_authorize'); $controllers->post('/token', 'controller.oauth2:tokenAction'); $controllers->get('/provider/{providerId}/authorize/', 'controller.oauth2:authorizeWithProviderAction') ->before($requireUnauthenticated) ->bind('oauth2_provider_authorize'); // AuthProviders callbacks $controllers->get('/provider/{providerId}/callback/', 'controller.oauth2:authorizeCallbackAction') ->before($requireUnauthenticated) ->bind('login_authentication_provider_callback'); return $controllers; } }