/** * Create instance * * @return Engine */ public function create(Request $request) { $engine = new Engine($this->options['view_path'], null); // Add folder shortcut (assets::file.js) $engine->addFolder('assets', $this->options['assets_path']); $engine->addFolder('view', $this->options['view_path']); $session = $request->getAttribute(SessionMiddleware::ATTRIBUTE); $baseUrl = $request->getAttribute('base_url'); // Register Asset extension $cacheOptions = array('cachepath' => $this->options['cache_path'], 'cachekey' => $session->get('user.locale'), 'baseurl' => $baseUrl, 'minify' => $this->options['minify']); $engine->loadExtension(new \Odan\Plates\Extension\AssetCache($cacheOptions)); return $engine; }
/** * Action (JsonRpc) * * @param Request $request * @param Response $response * @return mixed */ public function load(Request $request = null, Response $response = null) { $json = $request->getAttribute('json'); $params = value($json, 'params'); $result = ['status' => 1]; return $result; }
/** * Check user session login * * @param Request $request * @param Response $response * @return bool|Response */ public static function check(Request $request, Response $response, $action, $callback) { /* @var $app AppContainer */ $app = $request->getAttribute(\App\Middleware\AppMiddleware::ATTRIBUTE); if (!static::isAuthRequired($app, $action)) { return true; } $userSession = new UserSession($app); if ($userSession->isValid()) { return true; } else { $http = new \App\Util\Http($request, $response); if ($http->isJsonRpc()) { $json = new \App\Util\JsonServer($request, $response); $jsonContent = $json->getResponseByError('Unauthorized', 0, 0, 401); return $jsonContent; } else { $uri = $app->http->getBaseUrl('/login'); return new RedirectResponse($uri); // alternative would be // new HtmlResponse('401 Unauthorized', 401); } } return true; }
public function getData(Request $request, array $data = null) { $result = ['baseurl' => $request->getAttribute('base_url')]; if (!empty($data)) { $result = array_replace_recursive($result, $data); } return $result; }
/** * Handle an exception and generate an error response. * * @param Exception $ex The exception to handle. * @param Request $request The request. * @param Response $response The response. * @return Response A response */ public function handleException(Exception $ex, Request $request, Response $response) { $message = sprintf("[%s] %s\n%s", get_class($ex), $ex->getMessage(), $ex->getTraceAsString()); // Must be PSR logger (Monolog) $logger = $request->getAttribute(\App\Middleware\LoggerMiddleware::ATTRIBUTE); if (!empty($logger)) { $logger->error($message); } $stream = new Stream('php://temp', 'wb+'); $stream->write('An Internal Server Error Occurred'); // Verbose error output if (!empty($this->config['verbose'])) { $stream->write("\n<br>{$message}"); } $response = $response->withStatus(500)->withBody($stream); return $response; }
/** * Create instance * * @return AppContainer */ public function create(Request $request) { $app = new \App\Container\AppContainer(); $app->config = $this->config; $app->logger = $request->getAttribute(LoggerMiddleware::ATTRIBUTE); $app->session = $request->getAttribute(SessionMiddleware::ATTRIBUTE); $app->translator = $request->getAttribute(TranslatorMiddleware::ATTRIBUTE); $app->db = $request->getAttribute(CakeDatabaseMiddleware::ATTRIBUTE); $app->view = $request->getAttribute(PlatesMiddleware::ATTRIBUTE); $app->http = $request->getAttribute(HttpMiddleware::ATTRIBUTE); $app->user = new \App\Service\User\UserSession($app); $app->user->setLocale($app->user->getLocale()); return $app; }
/** * Edit * * @param Request $request * @param Response $response * @return Response */ public function edit(Request $request = null, Response $response = null) { // All GET parameters $queryParams = $request->getQueryParams(); // All POST or PUT parameters $postParams = $request->getParsedBody(); // Single GET parameter //$title = $queryParams['title']; // // Single POST/PUT parameter //$data = $postParams['data']; // // Get routing arguments $vars = $request->getAttribute('vars'); $id = $vars['id']; // Get config value $app = $this->app($request); $env = $app->config['env']['name']; // Get GET parameter $id = $app->http->get('id'); // Increment counter $counter = $app->session->get('counter', 0); $counter++; $app->session->set('counter', $counter); $app->logger->info('My log message'); // Set locale //$app->session->set('user.locale', 'de_DE'); // //Model example //$user = new \App\Model\User($app); //$userRows = $user->getAll(); //$userRow = $user->getById($id); // // Add data to template $data = $this->getData($request, ['id' => $id, 'assets' => $this->getAssets(), 'content' => 'view::User/html/edit.html.php']); // Render template $content = $app->view->render('view::Layout/html/layout.html.php', $data); // Return new response $response->getBody()->write($content); return $response; }
public function testNotEmmitRequestIdToResponse() { $requestIdProviderFactory = $this->getMock(RequestIdProviderFactoryInterface::class); $requestIdProvider = $this->getMock(RequestIdProviderInterface::class); $requestIdProviderFactory->method('create')->willReturn($requestIdProvider); $requestIdProvider->method('getRequestId')->willReturn('123456789'); $middleware = new RequestIdMiddleware($requestIdProviderFactory, null); $request = new ServerRequest(); $response = new Response(); $calledOut = false; $outFunction = function ($request, $response) use(&$calledOut) { $calledOut = true; $this->assertSame('123456789', $request->getAttribute(RequestIdMiddleware::ATTRIBUTE_NAME)); return $response; }; $result = call_user_func($middleware, $request, $response, $outFunction); $this->assertTrue($calledOut, 'Out is not called'); $this->assertSame($response, $result); $this->assertEquals(null, $result->getHeaderLine(RequestIdProvider::DEFAULT_REQUEST_HEADER)); $this->assertSame('123456789', $middleware->getRequestId()); }
public function testDontGenerateBecouseHeaderExists() { $this->generator->expects($this->never())->method('generateRequestId'); $middleware = new RequestIdMiddleware($this->generator); $request = new ServerRequest([], [], 'https://github.com/php-middleware/request-id', 'GET', 'php://input', [RequestIdMiddleware::DEFAULT_HEADER_REQUEST_ID => '987654321']); $response = new Response(); $calledOut = false; $outFunction = function ($request, $response) use(&$calledOut) { $calledOut = true; $this->assertSame('987654321', $request->getAttribute(RequestIdMiddleware::ATTRIBUTE_NAME)); return $response; }; $result = call_user_func($middleware, $request, $response, $outFunction); $this->assertTrue($calledOut, 'Out is not called'); $this->assertNotSame($response, $result); $this->assertEquals('987654321', $result->getHeaderLine(RequestIdMiddleware::DEFAULT_HEADER_REQUEST_ID)); $this->assertSame('987654321', $middleware->getRequestId()); }