public function boot(Application $app)
 {
     // Because they're at the root admin prefix we mount them directly instead to  $app['np.admin.controllers']
     $app->mount($app['np.admin.controllers.prefix'], new AuthRouting());
     $app->mount($app['np.admin.controllers.prefix'], new AdminRouting());
     $app->before(function () use($app) {
         $app['np.admin.theme'] = $app->share(function ($app) {
             if (isset($app['np.theme.manager'])) {
                 $app['np.theme.manager']->get($app['np.admin.theme']);
             }
         });
     });
     // $app->on(ThemeEvents::THEME_MANAGER_INITIALIZED, function(Event $event) use ($app) {
     //     $app['np.admin.theme'] = $app->share(function($app) {
     //         if (isset($app['np.theme.manager'])
     //             && $theme = $app['np.theme.manager']->getTheme($app['np.admin.theme'])) {
     //             $javascripts = array();
     //             // add all extension js modules
     //             $resources = $app['np.extension_manager']->collectMethodCalls('getResourceManifest');
     //             foreach ($resources as $resource) {
     //                 if (0 === strpos($resource, '/js')) {
     //                     $javascripts[] = $resource;
     //                 }
     //             }
     //             $theme->addJavaScripts($javascripts);
     //             $app['np.theme.manager']->setTheme($theme);
     //             return $theme;
     //         }
     //     });
     // });
 }
Example #2
0
 /**
  * Adds a single module
  * 
  * @param Module $module
  */
 public function add(Module $module)
 {
     if ($this->locked) {
         throw new \RuntimeException('Cannot register modules: the registry is already locked');
     }
     $this->modules[] = $module;
     // A module is by its definition a Silex\ControllerProviderInterface so
     // is possible to pass it to Silex\Application::mount() method
     $this->app->mount($module->getPrefix(), $module);
 }
 /**
  * {@inheritDoc}
  */
 public function register(SilexApplication $app)
 {
     $app['payum.api.controller.root'] = $app->share(function () {
         return new RootController();
     });
     $app['payum.api.controller.payment'] = $app->share(function () use($app) {
         return new PaymentController($app['payum'], $app['api.view.payment_to_json_converter'], $app['form.factory'], $app['api.view.form_to_json_converter'], $app['url_generator']);
     });
     $app['payum.api.controller.token'] = $app->share(function () use($app) {
         return new TokenController($app['payum'], $app['form.factory'], $app['api.view.token_to_json_converter'], $app['api.view.form_to_json_converter']);
     });
     $app['payum.api.controller.gateway'] = $app->share(function () use($app) {
         return new GatewayController($app['form.factory'], $app['url_generator'], $app['api.view.form_to_json_converter'], $app['payum.gateway_config_storage'], $app['api.view.gateway_config_to_json_converter']);
     });
     $app['payum.api.controller.gateway_meta'] = $app->share(function () use($app) {
         return new GatewayMetaController($app['form.factory'], $app['api.view.form_to_json_converter'], $app['payum']);
     });
     $app->get('/', 'payum.api.controller.root:rootAction')->bind('api_root');
     /** @var ControllerCollection $payments */
     $payments = $app['controllers_factory'];
     $payments->get('/meta', 'payum.api.controller.payment:metaAction')->bind('payment_meta');
     $payments->get('/{id}', 'payum.api.controller.payment:getAction')->bind('payment_get');
     $payments->put('/{id}', 'payum.api.controller.payment:updateAction')->bind('payment_update');
     $payments->delete('/{id}', 'payum.api.controller.payment:deleteAction')->bind('payment_delete');
     $payments->post('/', 'payum.api.controller.payment:createAction')->bind('payment_create');
     $payments->get('/', 'payum.api.controller.payment:allAction')->bind('payment_all');
     $app->mount('/payments', $payments);
     /** @var ControllerCollection $gateways */
     $gateways = $app['controllers_factory'];
     $gateways->get('/meta', 'payum.api.controller.gateway_meta:getAllAction')->bind('payment_factory_get_all');
     $gateways->get('/', 'payum.api.controller.gateway:allAction')->bind('gateway_all');
     $gateways->get('/{name}', 'payum.api.controller.gateway:getAction')->bind('gateway_get');
     $gateways->delete('/{name}', 'payum.api.controller.gateway:deleteAction')->bind('gateway_delete');
     $gateways->post('/', 'payum.api.controller.gateway:createAction')->bind('gateway_create');
     $app->mount('/gateways', $gateways);
     /** @var ControllerCollection $tokens */
     $tokens = $app['controllers_factory'];
     $tokens->post('/', 'payum.api.controller.token:createAction')->bind('token_create');
     $app->mount('/tokens', $tokens);
     $gateways->before($app['api.parse_json_request']);
     $payments->before($app['api.parse_json_request']);
     $tokens->before($app['api.parse_json_request']);
     $gateways->before($app['api.parse_post_request']);
     $payments->before($app['api.parse_post_request']);
     $tokens->before($app['api.parse_post_request']);
     if ($app['debug']) {
         $gateways->after($app['api.view.pretty_print_json']);
         $payments->after($app['api.view.pretty_print_json']);
         $tokens->after($app['api.view.pretty_print_json']);
     }
 }
Example #4
0
 /**
  * Finish mounting process by sorting them and mounting them to application
  */
 public function finish()
 {
     if ($this->isPropagationStopped()) {
         return;
     }
     krsort($this->priorities);
     foreach ($this->priorities as $priority) {
         foreach ($priority as $list) {
             list($prefix, $controllers) = $list;
             $this->app->mount($prefix, $controllers);
         }
     }
     $this->stopPropagation();
 }
 /**
  * Bootstrap Silex Application for tests
  * @method createApplication
  * @return $app              Silex\Application
  */
 public function createApplication()
 {
     $app = new Application(['dev' => true]);
     // errors
     error_reporting(E_ALL ^ E_STRICT);
     $app->error(function (Exception $e, $code) use($app) {
         return $app->json(['error' => $e->getMessage(), 'type' => get_class($e)], $code);
     });
     // database
     $app->register(new DoctrineServiceProvider(), ['db.options' => ['driver' => 'pdo_sqlite', 'path' => __DIR__ . '/tests.db', 'charset' => 'UTF8']]);
     // jwt (json-web-token)
     $app['security.jwt'] = ['secret_key' => 'omg-so-secret-test-!', 'life_time' => 2592000, 'algorithm' => ['HS256'], 'options' => ['header_name' => 'X-Access-Token', 'username_claim' => 'email']];
     $app->register(new SecurityServiceProvider());
     $app->register(new SecurityJWTServiceProvider());
     // mailer
     $app->register(new SwiftmailerServiceProvider(), ['swiftmailer.options' => ['host' => '127.0.0.1', 'port' => '1025']]);
     // twig
     $app->register(new TwigServiceProvider(), ['twig.path' => __DIR__ . '/../templates']);
     $app->register(new UrlGeneratorServiceProvider());
     // simple-user-jwt
     $app['user.jwt.options'] = ['invite' => ['enabled' => true], 'forget' => ['enabled' => true], 'mailer' => ['enabled' => true, 'from' => ['email' => '*****@*****.**', 'name' => 'Test']]];
     $app->register(new UserProvider());
     // roles
     $app['security.role_hierarchy'] = ['ROLE_INVITED' => ['ROLE_USER'], 'ROLE_REGISTERED' => ['ROLE_INVITED', 'ROLE_ALLOW_INVITE'], 'ROLE_ADMIN' => ['ROLE_REGISTERED']];
     // needed to parse user at each request
     $app['security.firewalls'] = ['login' => ['pattern' => 'register|login|forget|reset', 'anonymous' => true], 'secured' => ['pattern' => '.*$', 'users' => $app->share(function () use($app) {
         return $app['user.manager'];
     }), 'jwt' => ['use_forward' => true, 'require_previous_session' => false, 'stateless' => true]]];
     // controller
     $app->mount('/', new UserProvider());
     return $app;
 }
 public function createApplication()
 {
     $app = new Application();
     $app['debug'] = true;
     $app['session.test'] = true;
     $app['monolog.logfile'] = __DIR__ . '/../build/logs/dev.monolog.log';
     $app['session.storage'] = new MockFileSessionStorage();
     $app->register(new Provider\TwigServiceProvider());
     $app->register(new Provider\ServiceControllerServiceProvider());
     $app->register(new Provider\SecurityServiceProvider());
     $app->register(new Provider\SessionServiceProvider());
     $app->register(new Provider\UrlGeneratorServiceProvider());
     $app->register(new Provider\MonologServiceProvider());
     // Mock services
     $app->register(new MockSmsHandlerProvider());
     $app['user.manager'] = $app->share(function () {
         return new MockUserProvider();
     });
     $smsLoginProvider = new SmsLoginProvider();
     $app->register($smsLoginProvider);
     $app->mount('', $smsLoginProvider);
     $app->get('/', function () use($app) {
         return $app['twig']->render('home.twig', ['message' => 'Testing']);
     });
     $app['security.firewalls'] = array('login' => array('pattern' => '^/login$'), 'secured_area' => array('pattern' => '^.*$', 'sms' => true, 'logout' => ['logout_path' => '/logout'], 'users' => $app->share(function ($app) {
         return $app['user.manager'];
     })));
     $app['twig.templates'] = ['login.twig' => '<form action="{{ form_action }}" method="POST">{% if mobile is defined %}<p class="number">{{ mobile }}</p>' . '<input type="hidden" name="mobile" value="{{ mobile }}" />{% endif %}' . '<input type="password" placeholder="Secret code" name="code" />' . '<button class="btn btn-positive btn-block" name="submit">Login</button></form>', 'home.twig' => 'Homepage {{ message }}'];
     unset($app['exception_handler']);
     return $app;
 }
 public function boot(Application $app)
 {
     $app->mount($app['widget.routes.prefix'], $this);
     /*$app->on('twig:render', function() use($app) {
     
     			$app['twig']->addGlobal('widgetManager', $app['widget.manager']);
     		});*/
 }
 /**
  * Bootstraps the application.
  *
  * This method is called after all services are registered
  * and should be used for "dynamic" configuration (whenever
  * a service must be requested).
  */
 public function boot(Application $app)
 {
     $paths = $app['lazy.thumbnail.mount_paths'];
     foreach ($paths as $route => $data) {
         $realRoute = isset($data['route']) ? $data['route'] : $route;
         $app->mount($realRoute, $this->connect($app, $realRoute, $data));
     }
 }
Example #9
0
 public function register(Application $app)
 {
     $app['company'] = $app->share(function () use($app) {
         $storage = new CompanyStorage($app);
         return new Service\Company($app, $storage);
     });
     $app['building'] = $app->share(function () use($app) {
         $storage = new BuildingStorage($app);
         return new Service\Building($app, $storage);
     });
     $app['rubric'] = $app->share(function () use($app) {
         $storage = new RubricStorage($app);
         return new Service\Rubric($app, $storage);
     });
     $app->mount('/company', new CompanyController());
     $app->mount('/building', new BuildingController());
     $app->mount('/rubric', new RubricController());
 }
 public function process(Application $app, ReflectionClass $reflectionClass)
 {
     $controllerCollection = $app['controllers_factory'];
     /** @var AnnotationService $annotationService */
     $annotationService = $app['annot'];
     $annotationService->processClassAnnotations($reflectionClass, $controllerCollection);
     $annotationService->processMethodAnnotations($reflectionClass, $controllerCollection);
     $app->mount($this->prefix, $controllerCollection);
 }
 /**
  * Returns Silex Application instance.
  *
  * @return Application
  */
 private function createApplication()
 {
     $app = new Application();
     $controller = new ImageController(array('image_path' => __DIR__));
     $app->register(new InterventionImageServiceProvider())->register(new UrlGeneratorServiceProvider());
     //Automatic images mount
     $app->mount('/', $controller);
     return $app;
 }
Example #12
0
 /**
  * {@inheritdoc}
  */
 public function createApplication()
 {
     $app = new Application();
     $app['controller.thumbnails'] = new Controller();
     $app->mount('/thumbs', $app['controller.thumbnails']);
     $app->register(new ServiceControllerServiceProvider());
     $mock = $this->getMock('Bolt\\Thumbs\\ThumbnailResponder', ['respond'], [], '', false);
     $app['thumbnails'] = $mock;
     return $app;
 }
 /**
  * Bootstraps the application.
  *
  * This method is called after all services are registered
  * and should be used for "dynamic" configuration (whenever
  * a service must be requested).
  */
 public function boot(Application $app)
 {
     if (!isset($app[self::PROVIDER_KEY . '.controllersPath'])) {
         throw new \Exception(self::PROVIDER_NAME . ': Please configure ' . self::PROVIDER_KEY . '.controllersPath');
     }
     $this->Parser = new Parser($app[self::PROVIDER_KEY . '.controllersPath'], $app[self::PROVIDER_KEY . '.recursiv']);
     $this->controllersAsApplicationAwareService = $app[self::PROVIDER_KEY . '.controllersAsApplicationAwareServices'];
     $this->controllers = $this->Parser->parseEmAll()->getParsedControllers();
     $app->mount('/', $this);
 }
 /**
  * Create scope controllers
  */
 public function createScopeControllers()
 {
     $this->configLoader->load();
     $silex = $this->silex;
     $manifests = $this->configLoader->getManifests();
     foreach ($manifests as $scope => $manifest) {
         /** @var ControllerCollection $controllers_factory */
         $controllers_factory = $this->silex['controllers_factory'];
         foreach ($manifest['routes'] as $http_method => $route) {
             $scope_path = $this->configLoader->getPath();
             /** @var Controller $routeController */
             $routeController = $controllers_factory->{$http_method}($route['route'], function (Request $request) use($silex, $scope, $manifest, $route, $scope_path) {
                 //Scope container
                 $scope_container = $silex['scopes'][$scope];
                 if (isset($silex['translator'])) {
                     $scope_container['translator'] = $silex['translator'];
                 }
                 if (isset($silex['url_generator'])) {
                     $scope_container['url_generator'] = $silex['url_generator'];
                 }
                 if (isset($silex['log_factory'])) {
                     $scope_container['log_factory'] = $silex['log_factory'];
                 }
                 if (isset($silex['predis'])) {
                     $scope_container['predis'] = $silex['predis'];
                 }
                 $silex['scopes'][$scope] = $scope_container;
                 /** @var Twig_Loader_Filesystem $twig_loader_filesystem */
                 $twig_loader_filesystem = $silex['twig.loader.filesystem'];
                 $twig_loader_filesystem->prependPath($scope_path . '/' . $scope . '/views');
                 //Create request
                 $psr7Factory = new DiactorosFactory();
                 $psrRequest = $psr7Factory->createRequest($request);
                 /** @var AbstractScopeController $scope_controller */
                 $namespace_controller = $this->scope_namespace . implode('\\', [$scope, 'controller', ucfirst($route['controller']) . 'Controller']);
                 $scope_controller = $namespace_controller::create($manifest, $silex['scopes'][$scope], $psrRequest, $this->base_namespace);
                 $scope_controller->setTwig($silex['twig']);
                 $psrResponse = $scope_controller->execute($route['call']);
                 //Create response
                 $httpFoundationFactory = new HttpFoundationFactory();
                 $symfonyResponse = $httpFoundationFactory->createResponse($psrResponse);
                 return $symfonyResponse;
             });
             //Filter
             if (is_array($route['filter'])) {
                 foreach ($route['filter'] as $filter) {
                     $routeController->before($this->silex['filter_factory']->createFilter($scope, $filter));
                 }
             }
             //Bind
             $routeController->bind(implode('::', [$route['controller'], $route['call']]));
         }
         $this->silex->mount($manifest['mount'], $controllers_factory);
     }
 }
 /**
  * Register service function.
  *
  * @param BaseApplication $app
  */
 public function register(BaseApplication $app)
 {
     // Repository
     $app['orderpdf.repository.order_pdf'] = $app->share(function () use($app) {
         return $app['orm.em']->getRepository('Plugin\\OrderPdf\\Entity\\OrderPdf');
     });
     // Order pdf event
     $app['orderpdf.event.order_pdf'] = $app->share(function () use($app) {
         return new OrderPdf($app);
     });
     // Order pdf legacy event
     $app['orderpdf.event.order_pdf_legacy'] = $app->share(function () use($app) {
         return new OrderPdfLegacy($app);
     });
     // ============================================================
     // コントローラの登録
     // ============================================================
     // 管理画面定義
     $admin = $app['controllers_factory'];
     // 強制SSL
     if ($app['config']['force_ssl'] == Constant::ENABLED) {
         $admin->requireHttps();
     }
     // 帳票の作成
     $admin->match('/plugin/order-pdf', '\\Plugin\\OrderPdf\\Controller\\OrderPdfController::index')->bind('plugin_admin_order_pdf');
     // PDFファイルダウンロード
     $admin->post('/plugin/order-pdf/download', '\\Plugin\\OrderPdf\\Controller\\OrderPdfController::download')->bind('plugin_admin_order_pdf_download');
     $app->mount('/' . trim($app['config']['admin_route'], '/') . '/', $admin);
     // ============================================================
     // Formの登録
     // ============================================================
     // 型登録
     $app['form.types'] = $app->share($app->extend('form.types', function ($types) use($app) {
         $types[] = new OrderPdfType($app);
         return $types;
     }));
     // -----------------------------
     // サービスの登録
     // -----------------------------
     // 帳票作成
     $app['orderpdf.service.order_pdf'] = $app->share(function () use($app) {
         return new OrderPdfService($app);
     });
     // ============================================================
     // メッセージ登録
     // ============================================================
     $file = __DIR__ . '/../Resource/locale/message.' . $app['locale'] . '.yml';
     if (file_exists($file)) {
         $app['translator']->addResource('yaml', $file, $app['locale']);
     }
     // initialize logger (for 3.0.0 - 3.0.8)
     if (!Version::isSupportMethod()) {
         eccube_log_init($app);
     }
 }
 public function boot(Application $app)
 {
     // Define login route at admin root, no slash
     $app->get($app['np.admin.controllers.prefix'], 'np.admin.controller:loginAction')->bind('np_login');
     // Mount all the admin controllers
     $app->mount($app['np.admin.controllers.prefix'], $app['np.admin.controllers']);
     // If logged in as admin, display admin controls
     $app->before(function () use($app) {
         $app['np.admin'] = $app['security']->isGranted('ROLE_ADMIN');
     });
 }
Example #17
0
 public function testMount()
 {
     $mounted = new ControllerCollection(new Route());
     $mounted->get('/{name}', function ($name) {
         return new Response($name);
     });
     $app = new Application();
     $app->mount('/hello', $mounted);
     $response = $app->handle(Request::create('/hello/Silex'));
     $this->assertEquals('Silex', $response->getContent());
 }
 public function createApplication()
 {
     $app = new Application();
     $app['debug'] = true;
     $app->register(new UrlGeneratorServiceProvider());
     $app->register(new SessionServiceProvider(), array('session.test' => true));
     $oauth = new GoogleOauth2Provider();
     $app->register($oauth, array('google_oauth.client_id' => 'foo', 'google_oauth.client_secret' => 'bar'));
     $app->mount('/', $oauth);
     return $app;
 }
 public function boot(Application $app)
 {
     /** @var ControllerCollection $api */
     $api = $app['controllers_factory'];
     $app->mount('/api', $api);
     $api->before(function (Request $request) {
         if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) {
             $data = json_decode($request->getContent(), true);
             $request->request->set('_json', $data ? $data : array());
         }
     });
     $api->post('/sample/get-hook', 'controllers.api.sample:getAction')->bind('api_sample_getHook');
     /** @var ControllerCollection $tutorial */
     $tutorial = $app['controllers_factory'];
     $app->mount('/tutorial', $tutorial);
     $tutorial->get('/{section}', 'controllers.tutorial.index:indexAction')->value('section', 'index')->bind('tutorial_index');
     /** @var ControllerCollection $welcome */
     $welcome = $app['controllers_factory'];
     $app->mount('/', $welcome);
     $welcome->get('/', 'controllers.welcome.index:indexAction')->bind('welcome_index');
 }
 /**
  * @inheritdoc
  */
 public function register(Application $app)
 {
     $app->get('/', 'DashboardController:index')->bind('dashboard');
     $app->post('/api', 'ApiController:save');
     $app->get('/applications', 'ApplicationsController:index')->bind('applications');
     $app->post('/applications/add', 'ApplicationsController:index')->bind('applications_add');
     $app->get('/login', 'LoginController:index')->bind('login');
     $app->get('/reports', 'ReportsController:index')->bind('reports');
     $app->get('/reports/{id}', 'ReportsController:view')->bind('reports_view');
     $app->get('/search/{query}', 'SearchController:query')->bind('search');
     $app->get('/settings', 'SettingsController:index')->bind('settings');
     $app->post('/settings/update', 'SettingsController:index')->bind('settings_update');
     /** var $datatables \Silex\ControllerCollection */
     $datatables = $app['controllers_factory'];
     $datatables->post('/applications', 'DatatablesController:applications')->bind('datatables_applications');
     $datatables->post('/reports', 'DatatablesController:reports')->bind('datatables_reports');
     $app->mount('/datatables', $datatables);
     /** var $delete \Silex\ControllerCollection */
     $delete = $app['controllers_factory'];
     $delete->post('/applications', 'DeleteController:applications')->bind('delete_applications');
     $delete->post('/reports', 'DeleteController:reports')->bind('delete_reports');
     $app->mount('/delete', $delete);
 }
Example #21
0
 /**
  * Bootstraps the application.
  *
  * This method is called after all services are registered
  * and should be used for "dynamic" configuration (whenever
  * a service must be requested).
  */
 public function boot(Application $app)
 {
     $app->register(new TwigServiceProvider(), array('twig.path' => $app['sentinel.twig.path']));
     $app->mount('/', $this->connect($app));
     // Get Projects
     $config = new ConfigServiceProvider();
     $app['sentinel.config'] = $config->getConfig();
     $app['sentinel.projects'] = $config->getProjects();
     $app['sentinel.parameters'] = $config->getParameters();
     $app['sentinel.flatprojects'] = $config->getProjects(true);
     $app['sentinel.series'] = $config->getSeries();
     // Create Database
     $this->db = new MongoDatabase($app['sentinel.parameters']['mongo']);
 }
Example #22
0
 function buildAndRegisterRoutes(Application $app)
 {
     foreach ($app['api-modules'] as $module) {
         $moduleName = $module['dbs.options'];
         $mountPoint = $module['mountPoint'];
         // instantiate controller
         $app["query.{$moduleName}.controller"] = $app->share(function () use($app, $moduleName, $module) {
             return new QueryResourceController($app['em']($moduleName), $app['serializer'], $module);
         });
         $api = $app['controllers_factory'];
         $api->get('/{resource}', "query.{$moduleName}.controller:get");
         $api->get('/{resource}/{id}', "query.{$moduleName}.controller:get")->assert('id', '\\d+');
         $app->mount($mountPoint, $api);
     }
 }
Example #23
0
 /**
  * @param Application $app
  */
 public function boot(Application $app)
 {
     $app->mount('/', $this->connect($app));
     if ($app['debug']) {
         $self = $this;
         $app->after(function (Request $request) use($app, $self) {
             $self->outOfRequestScopeTypes['request'] = get_class($request);
         });
         $app->finish(function () use($app, $self) {
             if (!$self->processed) {
                 $self->dump($app);
             }
         }, -1);
     }
 }
 /**
  * Define as rotas do controlador.
  *
  * @param \ReflectionClass $reflection
  * @param string $bundle
  * @param array $filters
  */
 private function defineControllerService(\ReflectionClass $reflection, $bundle, $filters)
 {
     $app = $this->app;
     $controllerPattern = "/" . strtolower($bundle) . "_/" . strtolower($reflection->getShortName()) . "/";
     $controller = strtolower($reflection->getShortName());
     $serviceName = strtolower($bundle . "." . $controller);
     $app[$serviceName] = $this->app->share(function () use($app, $reflection) {
         $controllerClass = $reflection->getName();
         return new $controllerClass($app);
     });
     ${$controller} = $this->app['controllers_factory'];
     $this->mapRoutes(${$controller}, $serviceName, $reflection);
     $this->setControllerFilters(${$controller}, $serviceName, $filters);
     $this->app->mount($controllerPattern, ${$controller});
 }
Example #25
0
 /**
  * @param Application $app
  */
 private function createControllers(Application $app)
 {
     $controllers = $this->recursiveGlob($this->controllerDir . "/*.php");
     $nameSpace = str_replace('\\', '\\\\', $this->controllerNameSpace);
     foreach ($controllers as $controllerFileName) {
         $controllerName = str_replace("/", "\\", $controllerFileName);
         $className = preg_replace("#^.*\\\\({$nameSpace}\\\\.+)\\.php\$#", "\$1", $controllerName);
         $reflection = new \ReflectionClass($className);
         if ($reflection->implementsInterface('Silex\\ControllerProviderInterface') && $reflection->isInstantiable()) {
             $mountSpace = preg_replace("#^{$nameSpace}(.+){$reflection->getShortName()}\$#", "\$1", $className);
             $mountSpace = strtolower(str_replace('\\', '/', $mountSpace));
             $app->mount($mountSpace, new $className());
         }
     }
 }
Example #26
0
 protected function configureApplication(Application $app)
 {
     $app->register(new \Silex\Provider\ServiceControllerServiceProvider());
     $app->register(new \Silex\Provider\SecurityServiceProvider());
     $provider = new OAuthControllerServiceProvider();
     $app->register($provider);
     $app->mount('/auth', $provider);
     $app['security.firewalls'] = ['healthcheck' => ['pattern' => '^/healthcheck', 'anonymous' => true, 'stateless' => true], 'auth' => ['pattern' => '^/auth', 'anonymous' => true, 'stateless' => true], 'api' => ['pattern' => '^/', 'soauth' => true, 'stateless' => true]];
     $app->get('/healthcheck', function () {
         return 'All Good!';
     });
     $app->get('/api', function () {
         return 'Access Granted';
     });
     $app['logger'] = $this->getMockLogger();
 }
 public function boot(Application $app)
 {
     $blog = $app['controllers_factory'];
     $blog->get('/', 'np.blog.controller:postsAction')->bind('blog_get_posts')->value('page', 1);
     $blog->get('/page/{page}', 'np.blog.controller:postsAction')->assert('page', "\\d")->bind('blog_get_paged_posts');
     $blog->get($app['np.blog.permalink_format'], 'np.blog.controller:postAction')->assert('year', "\\d\\d\\d\\d")->assert('month', "\\d\\d")->bind('blog_get_post');
     $blog->get('/{year}', 'np.blog.controller:yearIndexAction')->assert('year', "\\d\\d\\d\\d")->bind('blog_get_year_index');
     $blog->get('/{year}/{month}', 'np.blog.controller:monthIndexAction')->assert('year', "\\d\\d\\d\\d")->assert('month', "\\d\\d")->bind('blog_get_month_index');
     $blog->get('/tags/{tag}', 'np.blog.controller:taggedPostsAction')->bind('blog_get_tag_index');
     $blog->get('/archive', 'np.blog.controller:archiveAction')->bind('blog_get_archive');
     $blog->get('/rss', 'np.blog.controller:rssAction')->bind('blog_rss');
     // mount blog controllers
     $app->mount($app['np.blog.mount_point'], $blog);
     // create an index redirect
     $app->get($app['np.blog.mount_point'], function () use($app) {
         return $app->redirect($app['url_generator']->generate('blog_get_posts'));
     });
 }
 public function createApplication()
 {
     $response = new Response(json_encode(['access_token' => 'foo', 'token_type' => 'bearer', 'expires_in' => 0]));
     $clientProviderMock = $this->getMock('Euskadi31\\Component\\Security\\Storage\\ClientProviderInterface');
     $clientMock = $this->getMock('Euskadi31\\Component\\Security\\Storage\\ClientInterface');
     $grantTypeCollectionMock = $this->getMock('Euskadi31\\Component\\Security\\GrantType\\GrantTypeCollection');
     $passwordGrantTypeMock = $this->getMockBuilder('Euskadi31\\Component\\Security\\GrantType\\PasswordGrantType')->disableOriginalConstructor()->getMock();
     $passwordGrantTypeMock->method('getName')->will($this->returnValue('password'));
     $passwordGrantTypeMock->method('handle')->will($this->returnValue($response));
     $clientMock->method('getGrantTypes')->will($this->returnValue(['password']));
     $clientMock->method('getSecret')->will($this->returnValue('bar'));
     $clientProviderMock->method('get')->will($this->returnValue($clientMock));
     $grantTypeCollectionMock->method('get')->will($this->returnValue($passwordGrantTypeMock));
     $app = new Application();
     $app['debug'] = true;
     //unset($app['exception_handler']);
     $app->mount('/', new TokenControllerProvider());
     $app['oauth2.client.provider'] = function () use($clientProviderMock) {
         return $clientProviderMock;
     };
     $app['oauth2.grant_types'] = function () use($grantTypeCollectionMock) {
         return $grantTypeCollectionMock;
     };
     $app->error(function (Exception $exception, $code) use($app) {
         $e = FlattenException::create($exception);
         $headers = [];
         if ($exception instanceof HttpExceptionInterface) {
             $headers = $exception->getHeaders();
             $code = $exception->getStatusCode();
         } else {
             $code = $exception->getCode();
         }
         if ($code < 100 || $code >= 600) {
             $code = 500;
         }
         $error = ['error' => ['message' => $exception->getMessage(), 'type' => join('', array_slice(explode('\\', get_class($exception)), -1)), 'code' => $code]];
         if ($this->app['debug']) {
             $error['error']['exception'] = $e->toArray();
         }
         return new Response($app->json($error, $code, $headers));
     });
     return $app;
 }
 /** {@inheritdoc} */
 public function register(Application $app)
 {
     $app['repo.order'] = $app->share(function (Application $app) {
         return new OrderRepository($app['db']);
     });
     $app['service.order'] = $app->share(function (Application $app) {
         return new OrderService($app['repo.order'], $app['dispatcher']);
     });
     $app['subscriber.order_domain'] = $app->share(function (Application $app) {
         return new OrderDomainEventSubscriber($app['repo.order']);
     });
     $app['subscriber.domain_logger'] = $app->share(function (Application $app) {
         return new DomainLogger($app['api_logger']);
     });
     /** @var EventDispatcherInterface $dispatcher */
     $dispatcher = $app['dispatcher'];
     $dispatcher->addSubscriber($app['subscriber.domain_logger']);
     $dispatcher->addSubscriber($app['subscriber.order_domain']);
     $app->mount('/order', new OrderRoutesProvider());
 }
Example #30
0
 public function boot(Application $app)
 {
     /* @var $api ControllerCollection */
     $api = $app['controllers_factory'];
     $api->before(new RequestCleaner($app['purifier']));
     $api->before(function (Request $request) {
         $request->headers->set('Accept', 'application/json');
         if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) {
             $data = json_decode($request->getContent(), true);
             $request->request->replace(is_array($data) ? $data : array());
         }
     });
     if ($app->config('application.secure_ssl')) {
         $api->requireHttps();
     }
     $api->get('/me', 'controller.api.profile:handleShowSpeakerProfile');
     $api->get('/talks', 'controller.api.talk:handleViewAllTalks');
     $api->post('/talks', 'controller.api.talk:handleSubmitTalk');
     $api->get('/talks/{id}', 'controller.api.talk:handleViewTalk');
     $app->mount('/api', $api);
 }