/**
  * {@inheritdoc}
  */
 public function register(Application $app)
 {
     // handling CORS preflight request
     $app->before(function (Request $request) {
         if ($request->getMethod() === 'OPTIONS') {
             $response = new Response();
             $response->headers->set('Access-Control-Allow-Methods', 'GET,POST,PUT,DELETE,OPTIONS');
             $response->headers->set('Access-Control-Allow-Headers', 'Content-Type');
             $response->headers->set('Access-Control-Allow-Origin', '*');
             $response->setStatusCode(200);
             return $response;
         }
     }, $app::EARLY_EVENT);
     $app->before(function (Request $request) {
         if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) {
             $data = json_decode($request->getContent(), true);
             $request->request->replace(is_array($data) ? $data : []);
         }
     });
     // CORS domain
     $app->after(function (Request $request, Response $response) {
         $response->headers->set('Access-Control-Allow-Origin', '*');
         return $response;
     });
     // Returns the status code in the response body
     $app->after(function (Request $request, Response $response) {
         $status = $response->getStatusCode();
         // Errors
         if ($status >= 400 && $response instanceof JsonResponse) {
             $data = json_decode($response->getContent(), true);
             if (!is_array($data)) {
                 $data = [];
             }
             $response->setData(array_merge($data, ['status' => $status]));
         }
         return $response;
     });
     // Converts HTTP exception to response
     $app->error(function (\Exception $e) {
         $response = null;
         switch (true) {
             case $e instanceof NotFoundHttpException:
             case $e instanceof BadRequestHttpException:
                 $response = new JsonResponse(['message' => $e->getMessage()], $e->getStatusCode(), $e->getHeaders());
                 break;
             default:
         }
         return $response;
     });
 }
 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 #3
0
 public function register(Application $app)
 {
     $logger = $app[$this->name] = new Logger($this, $app);
     $app->before(function () use($logger) {
         $logger->bindSession();
     });
 }
Example #4
0
 public function register(Application $app)
 {
     $app['monolog'] = $app->share(function () use($app) {
         $log = new Logger(isset($app['monolog.name']) ? $app['monolog.name'] : 'myapp');
         $app['monolog.configure']($log);
         return $log;
     });
     $app['monolog.configure'] = $app->protect(function ($log) use($app) {
         $log->pushHandler($app['monolog.handler']);
     });
     $app['monolog.handler'] = function () use($app) {
         return new StreamHandler($app['monolog.logfile'], $app['monolog.level']);
     };
     if (!isset($app['monolog.level'])) {
         $app['monolog.level'] = function () {
             return Logger::DEBUG;
         };
     }
     if (isset($app['monolog.class_path'])) {
         $app['autoloader']->registerNamespace('Monolog', $app['monolog.class_path']);
     }
     $app->before(function (Request $request) use($app) {
         $app['monolog']->addInfo('> ' . $request->getMethod() . ' ' . $request->getRequestUri());
     });
     $app->error(function (\Exception $e) use($app) {
         $app['monolog']->addError($e->getMessage());
     });
     $app->after(function (Request $request, Response $response) use($app) {
         $app['monolog']->addInfo('< ' . $response->getStatusCode());
     });
 }
Example #5
0
 /**
  *  Init middlewares
  * 
  * @param Application $app 
  */
 private function _iniMiddlewares(Application $app)
 {
     // The middleware is run before the routing and the security.
     $app->before(function (Request $request, Application $app) {
         // The request body should only be parsed as JSON
         // if the Content-Type header begins with application/json
         if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) {
             $content = $request->getContent();
             $data = json_decode($content, true);
             $request->request->replace(is_array($data) ? $data : array());
         }
     }, Application::EARLY_EVENT);
     // The middleware is run after the routing and the security.
     $app->before(function (Request $request, Application $app) {
         // Get route
         $attrs = $request->attributes->all();
         if (isset($attrs['_route'])) {
             $route = $attrs['_route'];
             $app['route'] = $route;
         }
         // Get route params
         if (isset($attrs['_route_params']) && count($attrs['_route_params'])) {
             $route_params = $attrs['_route_params'];
             $app['route_params'] = $route_params;
         }
     });
     // Set event after the Response
     $app->finish(function (Request $request, Response $response) use($app) {
         // Stop event 'eApp'
         $event = $app['watch']->stop('eApp');
         if ($app['debug']) {
             $data = array();
             //----------------
             // Get sum profile params
             $duration = $event->getDuration();
             $memory = $event->getMemory();
             $data['Sum'] = array('t' => $duration, 'm' => $memory);
             // Get periods
             $periods = $event->getPeriods();
             // Get profile params for periods
             if (isset($periods[0])) {
                 $bootstrapDuration = $periods[0]->getDuration();
                 $data['Bootstrap'] = array('t' => $bootstrapDuration);
             }
             if (isset($periods[1])) {
                 $routingDuration = $periods[1]->getDuration();
                 $data['Routing'] = array('t' => $routingDuration);
             }
             if (isset($periods[2])) {
                 $controllerDuration = $periods[2]->getDuration();
                 $data['Controller'] = array('t' => $controllerDuration);
             }
             if (isset($periods[3])) {
                 $renderDuration = $periods[3]->getDuration();
                 $data['Render'] = array('t' => $renderDuration);
             }
             $app['monolog']->addDebug('<== Profile:eApp ==>', $data);
         }
     });
 }
 /**
  * {@inheritdoc}
  */
 public function register(Application $app)
 {
     $app['informator'] = $app->share(function ($app) {
         return new $app['informator_class']($app['url_generator']);
     });
     $app->before([$app['informator'], 'beforeRequest']);
 }
 /**
  * @param Application $app
  */
 public function boot(Application $app)
 {
     $options = $this->options;
     $cors = new CorsService($options);
     // handle OPTIONS preflight request if necessary
     $app->before(function (Request $request) use($app, $cors, $options) {
         if (!$cors->isCorsRequest($request)) {
             return;
         }
         if ($cors->isPreflightRequest($request)) {
             $response = $cors->handlePreflightRequest($request);
             $denied_codes = array(Response::HTTP_METHOD_NOT_ALLOWED, Response::HTTP_FORBIDDEN);
             $is_denied = in_array($response->getStatusCode(), $denied_codes);
             if ($is_denied && !empty($options['denied_reponse_class'])) {
                 $response = new $options['denied_reponse_class']($response->getContent(), $response->getStatusCode(), $response->headers->all());
             }
             return $response;
         }
         if (!$cors->isActualRequestAllowed($request)) {
             if (!empty($options['denied_reponse_class'])) {
                 $response = new $options['denied_reponse_class']('Not allowed', 403);
             } else {
                 $response = new Response('Not allowed.', 403);
             }
             return $response;
         }
     }, Application::EARLY_EVENT);
     // when the response is sent back, add CORS headers if necessary
     $app->after(function (Request $request, Response $response) use($cors) {
         if (!$cors->isCorsRequest($request)) {
             return;
         }
         $cors->addActualRequestHeaders($response, $request);
     });
 }
 public function boot(\Silex\Application $app)
 {
     $app->before(function (\Symfony\Component\HttpFoundation\Request $request) use($app) {
         $routeName = $request->attributes->get('_route');
         $route = $request->getRequestUri();
         $log = $_SERVER['REMOTE_ADDR'] . ' - ';
         if ($app['session']->has('user') && defined('USERNAME_METHOD_LOGGED')) {
             $user = $app['session']->get('user');
             $method = USERNAME_METHOD_LOGGED;
             if (is_callable(array($user, $method))) {
                 $name = $user->{$method}();
                 if (!empty($name)) {
                     $log .= $name;
                 }
             }
         }
         if (!empty($routeName)) {
             $log .= ' está acessando a rota "' . $routeName . '" (' . $route . ')';
         } else {
             if (!file_exists(__WEBROOT__ . $route)) {
                 $log .= ' tentou acessar um arquivo ou rota inexistente (' . $route . ')!';
             } else {
                 $log .= ' está acessando um arquivo (' . $route . ')!';
             }
         }
         $app['monolog']->addInfo($log);
     });
     $app->error(function (\Exception $e, $code) use($app) {
         $msg = $code != 500 ? $e->getMessage() : $e->getFile() . ' na linha ' . $e->getLine() . ': ' . $e->getMessage();
         $app['monolog']->addError('cod: ' . $code . ' => ' . $msg);
     });
 }
 public function boot(Application $app)
 {
     $app->before(function () use($app) {
         $app['np.extensions']['debug'] = $app['debug'];
         $app['np.extensions']['admin'] = $app['np.admin'];
         $app['np.extensions']->boot();
         // add template paths for all extensions and blocks
         $app['twig.loader.filesystem'] = $app->share($app->extend('twig.loader.filesystem', function ($loader, $app) {
             foreach ($app['np.extensions']->getAll() as $namespace => $extension) {
                 $loader->addPath($extension->getPath(), $namespace);
             }
             foreach ($app['np.extensions']['block_types'] as $blockType) {
                 $loader->addPath($blockType->getPath(), 'block_' . $app['np.slug_helper']->slugify($blockType->name));
             }
             return $loader;
         }));
         // load collected twig functions
         $app['twig'] = $app->share($app->extend('twig', function ($twig, $app) {
             foreach ($app['np.extensions']['twig_extensions'] as $extension) {
                 $twig->addExtension($extension);
             }
             return $twig;
         }));
     });
     $app->after(function (Request $request, Response $response) use($app) {
         if ($response instanceof BinaryFileResponse || !$app['np.extensions']->booted) {
             return;
         }
         $app['np.extensions']->prepareSnippets();
         $response->setContent($app['np.extensions']['snippet_queue']->processAll($app, $response->getContent()));
     });
 }
 public function boot(Application $app)
 {
     $app->before(function (Request $request) use($app) {
         $app['monolog']->addInfo('> ' . $request->getMethod() . ' ' . $request->getRequestUri());
     });
     /*
      * Priority -4 is used to come after those from SecurityServiceProvider (0)
      * but before the error handlers added with Silex\Application::error (defaults to -8)
      */
     $app->error(function (\Exception $e) use($app) {
         $message = sprintf('%s: %s (uncaught exception) at %s line %s', get_class($e), $e->getMessage(), $e->getFile(), $e->getLine());
         if ($e instanceof HttpExceptionInterface && $e->getStatusCode() < 500) {
             $app['monolog']->addError($message, array('exception' => $e));
         } else {
             $app['monolog']->addCritical($message, array('exception' => $e));
         }
     }, -4);
     $app->after(function (Request $request, Response $response) use($app) {
         if ($response instanceof RedirectResponse) {
             $app['monolog']->addInfo('< ' . $response->getStatusCode() . ' ' . $response->getTargetUrl());
         } else {
             $app['monolog']->addInfo('< ' . $response->getStatusCode());
         }
     });
 }
 public function boot(Application $app)
 {
     // set up the middleware with short-circuit
     $app->before(function (Request $request) use($app) {
         return $this->enforceValidSessionId($app, $request);
     });
 }
 public function register(Application $app)
 {
     $app['url_generator'] = $app->share(function () use($app) {
         $urlGenerator = new UrlGenerator($app['routes'], $app['request_context']);
         if (isset($app['facebook.canvas']) && $app['facebook.canvas'] && isset($app['facebook.namespace'])) {
             $urlGenerator->setNamespace($app['facebook.namespace']);
         }
         return $urlGenerator;
     });
     if (!isset($app['facebook.class_path'])) {
         $app['facebook.class_path'] = __DIR__ . '/../../../vendor/facebook-php-sdk/src';
     }
     require_once $app['facebook.class_path'] . '/facebook.php';
     $app['facebook'] = $app->share(function () use($app) {
         if (!isset($app['session'])) {
             $app->register(new SessionServiceProvider());
         }
         $parameters = array('app_id', 'secret', 'namespace', 'canvas', 'proxy', 'timeout', 'connect_timeout', 'permissions', 'protect');
         $config = array();
         foreach ($parameters as $parameter) {
             if (isset($app['facebook.' . $parameter])) {
                 $config[$parameter] = $app['facebook.' . $parameter];
             }
         }
         return new Facebook($config, $app['session'], isset($app['monolog']) ? $app['monolog'] : null);
     });
     $app->before(function ($request) use($app) {
         $app['facebook']->setRequest($request);
     });
 }
Example #13
0
 /**
  * Register before callbacks
  *
  * $app["user.authenticated"]     => user must be authenticated to run the action
  * $app["user.in.group"]($groups) => user must have all defined groups to run the action
  */
 public function register(Application $app)
 {
     $app->before([$this, "addUserToRequest"], Application::EARLY_EVENT);
     $app["auth"] = $this;
     $app["auth.authenticated"] = [$this, "authenticated"];
     $app["auth.secure"] = [$this, "userHasGroup"];
 }
Example #14
0
 public function register(Application $app)
 {
     $app->before(function () use($app) {
         $app['session']->start();
         if ($app['request']->get('_route') == 'logout') {
             return;
         }
         if (!$app['session']->has('username')) {
             $openid = new \LightOpenID($_SERVER['SERVER_NAME']);
             if (!$openid->mode) {
                 $openid->identity = 'https://www.google.com/accounts/o8/id';
                 $openid->required = array('email' => 'contact/email', 'firstname' => 'namePerson/first', 'lastname' => 'namePerson/last');
                 return $app->redirect($openid->authUrl());
             } else {
                 if ($openid->validate()) {
                     $attributes = $openid->getAttributes();
                     $app['session']->set('username', $attributes['contact/email']);
                     $app['session']->set('fullname', $attributes['namePerson/first'] . ' ' . $attributes['namePerson/last']);
                 }
             }
         }
         $app['twig']->addGlobal('username', $app['session']->get('username'));
         $app['twig']->addGlobal('fullname', $app['session']->get('fullname'));
         if (isset($app['auth']) && !$app['auth']($app['session']->get('username'))) {
             $app['session']->remove('username');
             $app['session']->remove('fullname');
             return new Response($app['twig']->render('forbidden.html.twig'), 403);
         }
     });
 }
 public function register(Application $app)
 {
     $app->before(function (Request $request, Application $app) {
         if (explode('?', $request->getRequestUri())[0] === '/' || explode('?', $request->getRequestUri())[0] === '/not-found') {
             return;
         }
         $password = $request->request->get('founder');
         $cookie = $request->cookies->get('founder');
         $needsCookie = false;
         if (is_null($cookie)) {
             $needsCookie = true;
         }
         if (is_null($password)) {
             $password = $cookie;
         }
         $user = $app['password'];
         $isValidUser = in_array(strtolower($password), $user);
         $admin = strtolower($app['adminPassword']);
         if (!$isValidUser) {
             return new Response('', 301, ['location' => '/?invalid']);
         }
         if ($password === $admin) {
             $app['isAdmin'] = true;
         }
         if ($needsCookie) {
             setcookie('founder', $password);
         }
     });
 }
 /**
  * Register the Illuminate Database service
  *
  * @param Silex\Application
  */
 public function boot(Application $app)
 {
     if ($app['db.boot']) {
         $app->before(function () use($app) {
             $app['db'];
         }, Application::EARLY_EVENT);
     }
 }
 /**
  * @param \Silex\Application $app
  */
 protected function setupListeners($app)
 {
     $app->before(function () use($app) {
         if (isset($app['request'])) {
             $app['env']->setRequest($app['request']);
         }
     });
 }
 /**
  * Boot the Capsule Service.
  *
  * @param Application $app
  **/
 public function boot(Application $app)
 {
     if ($app['capsule.options']['bootEloquent']) {
         $app->before(function () use($app) {
             $app['capsule'];
         }, Application::EARLY_EVENT);
     }
 }
 public function register(Application $app)
 {
     if (!$this->booted) {
         $self = $this;
         $app->before(function () use($app, $self) {
             $self->assignRepos($app);
         });
     }
 }
 /**
  * Bootstrap application events
  *
  * @param Application $app
  * @return void
  */
 public function boot(Application $app)
 {
     // Bootstrap if the config says we should
     if ($this->config['boot']) {
         $app->before(function () use($app) {
             $app['db'];
         }, Application::EARLY_EVENT);
     }
 }
 /**
  * @param \Silex\Application $app
  *
  * @return void
  */
 public function boot(Application $app)
 {
     $app->before(function (Request $request) use($app) {
         if ($this->shouldBeSsl($request)) {
             $url = 'https://' . $request->getHttpHost() . $request->getRequestUri();
             return new RedirectResponse($url, 301);
         }
     });
 }
 public function register(Application $app)
 {
     $app->before(function (Request $request) {
         if ($this->isRequestTransformable($request)) {
             $transformedRequest = $this->transformContent($request->getContent());
             $request->request->replace($transformedRequest);
         }
     });
 }
 public function register(Application $app)
 {
     $app->before(function (Request $request) {
         if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) {
             $data = json_decode($request->getContent(), true);
             $request->request->replace(is_array($data) ? $data : array());
         }
     });
 }
 public function boot(Application $app)
 {
     $app->before(function (Request $request, Application $app) {
         //echo "Before Service Event<hr>";
     });
     $app->after(function (Request $request, Response $response) {
         //echo "After Service Event <hr>";
     });
 }
 public function boot(Application $app)
 {
     // Error Handling
     $schema = $app["url_generator"]->generate("schema", array("type" => "error"));
     $app["twig.loader"]->addLoader(new Twig_Loader_Filesystem(__DIR__ . "/templates"));
     $app->before(new AddSchema($schema, "error"));
     $app->error(function (\Exception $e, $code) use($app) {
         $app["json-schema.describedBy"] = $app["url_generator"]->generate("schema", array("type" => "error"));
     }, self::ERROR_HANDLER_PRIORITY);
 }
Example #26
0
 private function setUpMiddlewares(Application $app)
 {
     $app->before(function (Request $request) use($app) {
         if (!$this->isAuthRequiredForPath($request->getPathInfo())) {
             if (!$this->isValidTokenForApplication($app, $this->getTokenFromRequest($request))) {
                 throw new AccessDeniedHttpException('Access Denied');
             }
         }
     });
 }
 /**
  * @param \Silex\Application $app
  *
  * @return void
  */
 public function boot(Application $app)
 {
     $app->before(function (Request $request) {
         if ($request->server->get('argv', false)) {
             $this->parseCliRequestData($request);
         } else {
             $this->parseRequestData($request);
         }
     }, Application::EARLY_EVENT);
 }
 public function boot(Application $app)
 {
     $app->before($app['monolog.boot.before']);
     /*
      * Priority -4 is used to come after those from SecurityServiceProvider (0)
      * but before the error handlers added with Silex\Application::error (defaults to -8)
      */
     $app->error($app['monolog.boot.error'], -4);
     $app->after($app['monolog.boot.after']);
 }
 /**
  * Setup middle ware
  */
 protected function setupMiddleware()
 {
     // decode json body when present
     $this->app->before(function (Request $request) {
         if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) {
             $data = json_decode($request->getContent(), true);
             $request->request->replace(is_array($data) ? $data : array());
         }
     });
 }
 public function connect(Application $app)
 {
     // creates a new controller based on the default route
     $controllers = $app['controllers_factory'];
     //use session storage
     $app->register(new \Silex\Provider\SessionServiceProvider());
     //register ldap service
     $app['auth.ldap'] = function () use($app) {
         return new \Zend\Ldap\Ldap($app['auth.ldap.options']);
     };
     //redirect to login page if not logged inwar
     $app->before(function (Request $request) use($app) {
         //user is not logged in go to login
         if (null === $app['session']->get('user') && $request->get("_route") !== 'login' && $request->get("_route") !== '_auth_keepalive') {
             $app['session']->set('user_target', $request->getUri());
             return $app->redirect('/auth/login');
         }
         //user is logged in - go to home
         if ($app['session']->get('user') && $request->get("_route") == 'login') {
             return $app->redirect('/');
         }
         //write close to allow concurrent requests
         $app['session.storage']->save();
     });
     $controllers->match('/login', function (Request $request) use($app) {
         $view_params = array('error' => null);
         //handle login where appropriate
         if ($request->get('user') && $request->get('password')) {
             try {
                 //throws exception
                 $app['auth.ldap']->bind($request->get('user'), $request->get('password'));
                 $app['session']->set('user', array('username' => $request->get('user')));
                 if ($user_target = $app['session']->get('user_target')) {
                     return $app->redirect($user_target);
                 } else {
                     return $app->redirect('/');
                 }
             } catch (LdapException $e) {
                 $view_params['error'] = 'Login Failed with error code ' . $e->getcode();
             }
         }
         return $app['view']->render($app['auth.template.login'] ?: 'login', $view_params);
     })->bind('login');
     $controllers->match('/logout', function (Request $request) use($app) {
         $app['session']->set('user', null);
         return $app->redirect('/');
     });
     $controllers->match('/keepalive', function () use($app) {
         if ($app['session']->get('user')) {
             return new Response('', 204);
         }
         return new Response('Expired', 403);
     });
     return $controllers;
 }