public function onRoute(MvcEvent $e)
 {
     $request = $e->getRequest();
     if (!$request instanceof HttpRequest) {
         return;
     }
     $application = $e->getApplication();
     $serviceLocator = $application->getServiceManager();
     // Load the configuration for maintenance mode
     if ($serviceLocator->has('MaintenanceConfig')) {
         $config = $serviceLocator->get('MaintenanceConfig');
     } else {
         $config = new Config();
     }
     if (!$config->isEnabled()) {
         // Maintenance mode is disabled.
         return;
     }
     // Check the white list
     if ($request instanceof PhpRequest) {
         $address = $request->getServer('REMOTE_ADDR', null);
     } else {
         $address = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : null;
     }
     if (!empty($address)) {
         if (in_array($address, $config->getWhitelist())) {
             return;
         }
     }
     // Render the maintenance layout
     $renderer = new PhpRenderer();
     if ($serviceLocator->has('ViewHelperManager')) {
         $renderer->setHelperPluginManager($serviceLocator->get('ViewHelperManager'));
     }
     $resolver = new TemplateMapResolver();
     $resolver->add('maintenance', $config->getTemplate());
     $renderer->setResolver($resolver);
     $content = $renderer->render('maintenance');
     // Set the response
     $response = $e->getResponse();
     if (!$response instanceof HttpResponse) {
         $response = new HttpResponse();
     }
     $statusCode = $config->getStatusCode();
     $response->setStatusCode($statusCode);
     if ($statusCode === 503 && !$response->getHeaders()->has('Retry-After')) {
         $retryDate = $config->getRetryAfter();
         if ($retryDate instanceof DateTime) {
             $retryAfter = new RetryAfter();
             $retryAfter->setDate($retryDate);
             $response->getHeaders()->addHeader($retryAfter);
         }
     }
     $response->setContent($content);
     $e->setResponse($response);
     // Return the response
     return $response;
 }
Пример #2
1
 public function vCardAction()
 {
     $contact = $this->contactService->find($this->params('id'));
     if (!$contact) {
         return $this->notFoundAction();
     }
     $builder = new VCardBuilder();
     switch (true) {
         case $contact instanceof Company:
             $vcard = $builder->buildCompany($contact);
             break;
         case $contact instanceof Person:
             $vcard = $builder->buildPerson($contact);
             break;
         default:
             throw new RuntimeException('Invalid type provided.');
     }
     $data = $vcard->serialize();
     $response = new Response();
     $response->setStatusCode(Response::STATUS_CODE_200);
     $response->setContent($data);
     $headers = $response->getHeaders();
     $headers->addHeaderLine('Content-Disposition', 'attachment; filename="' . $contact->getDisplayName() . '.vcf"');
     $headers->addHeaderLine('Content-Length', strlen($data));
     $headers->addHeaderLine('Content-Type', 'text/plain');
     return $response;
 }
Пример #3
0
 public function getXmlAction($isin)
 {
     $display = new DisplayHelper();
     $certificate = $this->certificateRepository->load($isin);
     if (empty($certificate)) {
         return $this->response->setStatusCode(404);
     }
     try {
         $xml = $display->displayAsXml($certificate);
     } catch (\RuntimeException $e) {
         return $this->response->setStatusCode(405)->setContent($e->getMessage());
     }
     $this->response->headers()->addHeaderLine('Content-type', 'application/xml');
     return $this->response->setContent($xml);
 }
Пример #4
0
function plugin_preview_action()
{
    global $vars;
    $page = isset($vars['page']) ? $vars['page'] : '';
    $modified = 0;
    $response = new Response();
    if (!empty($page)) {
        $wiki = Factory::Wiki($page);
        if ($wiki->isReadable()) {
            $source = $wiki->get();
            array_splice($source, 10);
            $response->setStatusCode(Response::STATUS_CODE_200);
            $response->setContent('<' . '?xml version="1.0" encoding="UTF-8"?' . ">\n" . RendererFactory::factory($source));
            $headers = Header::getHeaders('text/xml', $wiki->time());
        } else {
            $response->setStatusCode(Response::STATUS_CODE_404);
            $headers = Header::getHeaders('text/xml');
        }
    } else {
        $response->setStatusCode(Response::STATUS_CODE_404);
        $headers = Header::getHeaders('text/xml');
    }
    $response->getHeaders()->addHeaders($headers);
    header($response->renderStatusLine());
    foreach ($response->getHeaders() as $_header) {
        header($_header->toString());
    }
    echo $response->getBody();
    exit;
}
Пример #5
0
 protected function setResponseContent(Response $response, array $data)
 {
     if ($response instanceof \Zend\Http\PhpEnvironment\Response) {
         $response->getHeaders()->addHeaderLine('Content-Type', 'application/json');
         $response->setContent(json_encode(array_merge(array('status' => $response->getStatusCode()), $data)));
     }
     return $response;
 }
Пример #6
0
 public function testIsValidDetectsGoodResponse()
 {
     $body = 'oauth_token=jZaee4GF52O3lUb9&oauth_token_secret=J4Ms4n8sxjYc0A8K0KOQFCTL0EwUQTri';
     $response = new HTTPResponse();
     $response->setContent($body)->setStatusCode(200);
     $token = new AccessToken($response);
     $this->assertTrue($token->isValid());
 }
 public function testSet201StatusCodeIfPost()
 {
     $request = new HttpRequest();
     $request->setMethod(HttpRequest::METHOD_POST);
     $this->event->setRequest($request);
     $this->response->setContent('foo');
     $this->resourceResponseListener->finishResponse($this->event);
     $this->assertEquals(201, $this->response->getStatusCode());
 }
Пример #8
0
 /**
  * @dataProvider exceptionDataProvider
  */
 public function testExceptionsAreThrownOnErrors($statusCode, $content, $expectedException)
 {
     $method = new ReflectionMethod('EzMail\\Service\\MandrillService', 'parseResponse');
     $method->setAccessible(true);
     $response = new HttpResponse();
     $response->setStatusCode($statusCode);
     $response->setContent($content);
     $this->setExpectedException($expectedException);
     $method->invoke($this->service, $response);
 }
Пример #9
0
 /**
  * Creates a new entry
  *
  * @param mixed $data
  * @return Response
  */
 public function create($data)
 {
     $sintegra = new Sintegra();
     $sintegra->exchangeArray($data);
     $this->getSintegraTable()->saveSintegra($sintegra);
     $response = new Response();
     $response->setStatusCode(200);
     $response->setContent(json_encode(array('status' => 'ok')));
     return $response;
 }
Пример #10
0
 public function testConstructorWithMissingStatus()
 {
     $params = array('error' => 'error');
     $httpResponse = new Response();
     $httpResponse->setStatusCode(200);
     $httpResponse->getHeaders()->addHeaderLine('Content-Type', 'text/html');
     $httpResponse->setContent(json_encode($params));
     $response = new CaptchaResponse($httpResponse);
     $this->assertSame(false, $response->getStatus());
 }
Пример #11
0
 /**
  * Wrap the Jaxon response into an HTTP response.
  *
  * @param  $code        The HTTP Response code
  *
  * @return \Zend\Http\Response
  */
 public function httpResponse($code = '200')
 {
     // Send HTTP Headers
     // $this->response->sendHeaders();
     // Create and return a ZF2 HTTP response
     $response = new HttpResponse();
     $headers = $response->getHeaders();
     $headers->addHeaderLine('Content-Type', $this->response->getContentType() . '; charset=' . $this->response->getCharacterEncoding());
     $response->setStatusCode(intval($code));
     $response->setContent($this->response->getOutput());
     return $response;
 }
Пример #12
0
 /**
  * @return \WebArchive\SnapshotCollection
  */
 private function generateSnapshots()
 {
     $uri = 'http://pokap.io/';
     $provider = new MementoProvider();
     $client = new Client($provider->createUrlRequest($uri));
     $response = new Response();
     $response->setContent(implode(gzfile(__DIR__ . '/fixtures/pokap.io-memento.gz')));
     $adapter = new TestAdapter();
     $adapter->setResponse($response);
     $client->setAdapter($adapter);
     return $provider->generateSnapshots($client->send(), $uri);
 }
Пример #13
0
 /**
  * @param int $year
  *
  * @return \WebArchive\SnapshotCollection
  */
 private function generateSnapshots($year)
 {
     $uri = 'http://archive.org/';
     $provider = new WayBackProvider($year);
     $client = new Client($provider->createUrlRequest($uri));
     $response = new Response();
     $response->setContent(implode(gzfile(__DIR__ . '/fixtures/archive.org-' . $year . '.html.gz')));
     $adapter = new TestAdapter();
     $adapter->setResponse($response);
     $client->setAdapter($adapter);
     return $provider->generateSnapshots($client->send(), $uri);
 }
Пример #14
0
 public function testConstructorWithHttpResponse()
 {
     $status = 'false';
     $errorCode = 'foobar';
     $responseBody = $status . "\n" . $errorCode;
     $httpResponse = new Response();
     $httpResponse->setStatusCode(200);
     $httpResponse->getHeaders()->addHeaderLine('Content-Type', 'text/html');
     $httpResponse->setContent($responseBody);
     $response = new ReCaptcha\Response(null, null, $httpResponse);
     $this->assertSame(false, $response->getStatus());
     $this->assertSame($errorCode, $response->getErrorCode());
 }
Пример #15
0
 public function testWrongContentTypeThrowsInvalidResponseException()
 {
     $this->setExpectedException('Magium\\Mail\\Api\\InvalidResponseException');
     $builder = $this->getMockBuilder('Zend\\Http\\Client')->setMethods(['send']);
     $client = $builder->getMock();
     /* @var $client \Zend\Http\Client */
     $response = new Response();
     $response->setContent(json_encode(['error' => 'error message']));
     $response->setHeaders(Headers::fromString('Content-Type: wrong'));
     $client->expects($this->once())->method('send')->willReturn($response);
     $generator = new Generator(new Configuration(), $client, 'abcd');
     $generator->generate();
 }
Пример #16
0
 public function testGetAll()
 {
     $clientMock = $this->getClientMock();
     $clientMock->expects($this->exactly(2))->method('setUri')->withConsecutive(['https://api.github.com/users/octocat/followers'], ['https://api.github.com/users/octocat/following']);
     $responseFollowers = new Response();
     $responseFollowers->setContent('[{"login": "******"},{"login": "******"},{"login": "******"}]');
     $responseFollowing = new Response();
     $responseFollowing->setContent('[{"login": "******"},{"login": "******"},{"login": "******"}]');
     $clientMock->expects($this->exactly(2))->method('send')->will($this->onConsecutiveCalls($responseFollowers, $responseFollowing));
     $this->sut->setHttpClient($clientMock);
     $actual = $this->sut->getAll('octocat');
     $expected = ['tekkub', 'mdo', 'charliesome', 'benbalter', 'muan', 'jlord'];
     $this->assertEquals($expected, $actual);
 }
Пример #17
0
 public function testUrlIsRight()
 {
     $builder = $this->getMockBuilder('Zend\\Http\\Client')->setMethods(['send']);
     $client = $builder->getMock();
     /* @var $client \Zend\Http\Client */
     $response = new Response();
     $response->setContent(json_encode(['email' => '*****@*****.**']));
     $response->setHeaders(Headers::fromString('Content-Type: application/json'));
     $client->expects($this->once())->method('send')->willReturn($response);
     $configuration = new Configuration();
     $generator = new Generator($configuration, $client, 'abcd');
     $email = $generator->generate();
     self::assertEquals('*****@*****.**', $email);
     self::assertEquals($configuration->getApiEndpointUrl(), $client->getUri()->toString());
 }
Пример #18
0
 /**
  * Get the output with given format, false if nothing: better throw an exception...
  * 
  * @param array $content
  * @return \Zend\View\Model\JsonModel|\Zend\Http\Response
  */
 public function setupOutput(array $content)
 {
     switch ($this->outputFormat) {
         case "json":
             if ($this->getStatusCode() != 200) {
                 $jsonModel = new JsonModel($content);
                 return $jsonModel;
             }
             break;
         case "xml":
         case "rdf":
             $response = new Response();
             $response->setStatusCode($this->getStatusCode());
             $response->getHeaders()->addHeaderLine('Content-Type', 'text/xml; charset=utf-8');
             $response->setContent($this->array2xml($content));
             return $response;
     }
     return false;
 }
Пример #19
0
 public function doAction()
 {
     $token = $this->getHttpRequestVerifier()->verify($this);
     $this->getHttpRequestVerifier()->invalidate($token);
     $gateway = $this->getPayum()->getGateway($token->getGatewayName());
     try {
         $gateway->execute(new Refund($token));
     } catch (ReplyInterface $reply) {
         if ($reply instanceof HttpRedirect) {
             $this->redirect()->toUrl($reply->getUrl());
         }
         if ($reply instanceof HttpResponse) {
             $this->getResponse()->setContent($reply->getContent());
             $response = new Response();
             $response->setStatusCode(200);
             $response->setContent($reply->getContent());
             return $response;
         }
         throw new \LogicException('Unsupported reply', null, $reply);
     }
     $this->redirect()->toUrl($token->getAfterUrl());
 }
Пример #20
0
 public function testOnDispatchStatus200()
 {
     $resolver = $this->getMock(ResolverInterface::class);
     $assetManager = $this->getMock(AssetManager::class, array('resolvesToAsset', 'setAssetOnResponse'), array($resolver));
     $assetManager->expects($this->once())->method('resolvesToAsset')->will($this->returnValue(true));
     $amResponse = new Response();
     $amResponse->setContent('bacon');
     $assetManager->expects($this->once())->method('setAssetOnResponse')->will($this->returnValue($amResponse));
     $serviceManager = $this->getMock(ServiceLocatorInterface::class);
     $serviceManager->expects($this->any())->method('get')->will($this->returnValue($assetManager));
     $application = $this->getMock(ApplicationInterface::class);
     $application->expects($this->once())->method('getServiceManager')->will($this->returnValue($serviceManager));
     $event = new MvcEvent();
     $response = new Response();
     $request = new Request();
     $module = new Module();
     $event->setApplication($application);
     $response->setStatusCode(404);
     $event->setResponse($response);
     $event->setRequest($request);
     $return = $module->onDispatch($event);
     $this->assertEquals(200, $return->getStatusCode());
 }
 public function testValidate()
 {
     $response = new Response();
     #        print_r(get_class_methods($response));
     #        die();
     $response->setContent('{"access_token": "f1876e22c5fa2eedab1f02545c175639d649a406",' . '"expires_in": 3600,' . '"token_type": "Bearer",' . '"scope": "",' . '"refresh_token": "19a9bf36cc42c62ba3d4ae047746d589a77448dc"' . '}');
     $mockHttpClient = M::mock('Zend\\Http\\Client');
     $mockHttpClient->shouldReceive('setUri')->once();
     $mockHttpClient->shouldReceive('setMethod')->once();
     $mockHttpClient->shouldReceive('setHeaders')->once();
     $mockHttpClient->shouldReceive('setRawBody')->once();
     $mockHttpClient->shouldReceive('send')->once()->andReturn($response);
     $oAuth2Service = $this->serviceManager->get('ZF\\OAuth2\\Client\\Service\\OAuth2Service');
     $oAuth2Service->setHttpClient($mockHttpClient);
     $access_token = $oAuth2Service->validate('default', array('code' => 'code', 'state' => $this->state));
     $compare = new \stdClass();
     $compare->access_token = 'f1876e22c5fa2eedab1f02545c175639d649a406';
     $compare->expires_in = 3600;
     $compare->token_type = 'Bearer';
     $compare->scope = '';
     $compare->refresh_token = '19a9bf36cc42c62ba3d4ae047746d589a77448dc';
     $this->assertEquals($access_token, $compare);
 }
Пример #22
0
 private function sendHandshakeResponse()
 {
     // Last 8 bytes of the client's handshake are used for key calculation later
     $l8b = $this->request->getContent();
     // Check for 2-key based handshake (Hixie protocol draft)
     $key1 = $this->getHandshakeRequest()->getHeader('Sec-Websocket-Key1')->getFieldValue();
     $key2 = $this->getHandshakeRequest()->getHeader('Sec-Websocket-Key2')->getFieldValue();
     // Origin checking (TODO)
     $originHeader = $this->getHandshakeRequest()->getHeader('Origin', null);
     $host = $this->getHandshakeRequest()->getHeader('Host')->getFieldValue();
     $location = $this->getHandshakeRequest()->getUriString();
     // Build response
     $response = new Response();
     $response->setStatusCode(101);
     $response->setReasonPhrase("WebSocket Protocol Handshake");
     $headers = new Headers();
     $response->setHeaders($headers);
     $headers->addHeaderLine("Upgrade", "WebSocket");
     $headers->addHeaderLine("Connection", "Upgrade");
     if ($originHeader) {
         $headers->addHeaderLine("Sec-WebSocket-Origin", $originHeader->getFieldValue());
     }
     $headers->addHeaderLine("Sec-WebSocket-Location", "ws://{$host}{$location}");
     // Build HIXIE response
     $response->setContent(self::calcHixieResponse($key1, $key2, $l8b));
     $this->setResponse($response);
     $handshakeRequest = new Handshake($this->getHandshakeRequest(), $this->getHandshakeResponse());
     $this->emit("handshake", [$handshakeRequest]);
     if ($handshakeRequest->isAborted()) {
         $this->close();
     } else {
         $this->socket->write($response->toString());
         $this->logger->debug("Got an HYBI style request, sent HYBY handshake response");
         $this->emit("connect");
     }
 }
Пример #23
0
 public function xmlAction()
 {
     $request = $this->getRequest();
     if (!$request->isPost()) {
         return $this->redirect()->toRoute('home');
     }
     $press9 = ["+13234645488", "+13234630229", "+13234637046", "+13234606024", "+13234606862", "+13238757245", "+12066821474", "+12028984721", "+13104376059", "+13104376078", "+13104376057", "+13104377159", "+13104376172", "+13104376175", "+13104376790", "+13104376058", "+13103011762", "+13108232832", "+13108232833"];
     $press9twice = ["+12132217960", "+12132217953"];
     $press9SunsetGordon = ["+12025541092"];
     if (isset($_POST['From']) && in_array($_POST['From'], $press9)) {
         $ID = 9;
     } elseif (isset($_POST['From']) && in_array($_POST['From'], $press9twice)) {
         $ID = '9wwww9';
     } elseif (isset($_POST['From']) && in_array($_POST['From'], $press9SunsetGordon)) {
         $ID = '9www#';
     } else {
         $ID = 6;
     }
     $xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Response>\n    <Play digits=\"wwww{$ID}\" />\n</Response>\n";
     $response = new Response();
     $response->getHeaders()->addHeaderLine('Content-Type', 'text/xml; charset=utf-8');
     $response->setContent($xml);
     return $response;
 }
Пример #24
0
 /**
  * Performs a HTTP redirection to specified URL with additional data.
  * It may generate redirected request using GET or POST HTTP method.
  * The function never returns.
  *
  * @param string $url URL to redirect to
  * @param array $params additional variable/value pairs to send
  * @param Response $response
  * @param string $method redirection method ('GET' or 'POST')
  */
 public static function redirect($url, $params = null, Response $response = null, $method = 'GET')
 {
     $url = self::absoluteUrl($url);
     $body = "";
     if (null === $response) {
         $response = new Response();
     }
     if ($method == 'POST') {
         $body = "<html><body onLoad=\"document.forms[0].submit();\">\n";
         $body .= "<form method=\"POST\" action=\"{$url}\">\n";
         if (is_array($params) && count($params) > 0) {
             foreach ($params as $key => $value) {
                 $body .= '<input type="hidden" name="' . $key . '" value="' . $value . "\">\n";
             }
         }
         $body .= "<input type=\"submit\" value=\"Continue OpenID transaction\">\n";
         $body .= "</form></body></html>\n";
     } else {
         if (is_array($params) && count($params) > 0) {
             if (strpos($url, '?') === false) {
                 $url .= '?' . self::paramsToQuery($params);
             } else {
                 $url .= '&' . self::paramsToQuery($params);
             }
         }
     }
     if (!empty($body)) {
         $response->setContent($body);
     } elseif (headers_sent()) {
         $response->setContent("<script language=\"JavaScript\"" . " type=\"text/javascript\">window.location='{$url}';" . "</script>");
     }
     $response->setStatusCode(302);
     $response->headers()->addHeaderLine('Location', $url);
     if (!headers_sent()) {
         header($response->renderStatusLine());
         foreach ($response->headers() as $header) {
             header($header->toString());
         }
     }
     echo $response->getBody();
     if (self::$exitOnRedirect) {
         exit;
     }
 }
Пример #25
0
 /**
  * @group ZF-8330
  */
 public function testGetsFeedLinksAndNormalisesRelativeUrlsOnUriWithPath()
 {
     $currClient = Reader\Reader::getHttpClient();
     $testAdapter = new TestAdapter();
     $response = new HttpResponse();
     $response->setStatusCode(200);
     $response->setContent('<!DOCTYPE html><html><head><link rel="alternate" type="application/rss+xml" href="../test.rss"><link rel="alternate" type="application/atom+xml" href="/test.atom"></head><body></body></html>');
     $testAdapter->setResponse($response);
     Reader\Reader::setHttpClient(new HttpClient(null, array('adapter' => $testAdapter)));
     $links = Reader\Reader::findFeedLinks('http://foo/bar');
     Reader\Reader::setHttpClient($currClient);
     $this->assertEquals('http://foo/test.rss', $links->rss);
     $this->assertEquals('http://foo/test.atom', $links->atom);
 }
Пример #26
0
 /**
  * @covers Hermes\Api\Response::__construct
  * @covers Hermes\Api\Response::getContent
  */
 public function testGetContent()
 {
     $http = new Client();
     $response = new ZendResponse();
     $headers = new Headers();
     $headers->addHeaderLine('Content-Type', 'application/json');
     $response->setHeaders($headers);
     $response->setContent(static::$sampleJson);
     $this->object = new Response($http, $response);
     $content = $this->object->getContent();
 }
Пример #27
0
 /**
  * 出力
  * @param array $headers ヘッダー(別途Header::getHeaders()で指定すること)
  * @param int $status ステータスコード
  * @param string $body 内容
  * @return void
  */
 public static function writeResponse($headers, $status = Response::STATUS_CODE_200, $body = '')
 {
     global $_string;
     // なぜかこの行を出力しないと503エラーが起きる
     echo "";
     // レスポンスをコンストラクト
     $response = new Response();
     if (!empty($body)) {
         if ($status == Response::STATUS_CODE_200 && isset($headers['If-None-Match']) && !isset($headers['ETag'])) {
             // Modifiedヘッダーが出力されてない場合、出力内容からETagを生成
             // 負荷対策にはならないが転送量を抑えることができる
             $hash = md5($body);
             if (preg_match('/' . $hash . '/', $headers['If-None-Match'])) {
                 $status = Response::STATUS_CODE_304;
             }
             $headers['Etag'] = $hash;
         } else {
             if ($status == Response::STATUS_CODE_401) {
                 // レスポンスコードが401の場合、認証画面を出力
                 $headers['WWW-Authenticate'] = Auth::getAuthHeader();
             }
         }
         // 内容が存在する場合容量をContent-Lengthヘッダーに出力
         //	if (!isset($headers['Content-Length'])){
         $headers['Content-Length'] = strlen($body);
         //	}
         // レスポンスに内容を追加
         $response->setContent($body);
     }
     // ajaxで送信した時に、net::ERR_CONTENT_LENGTH_MISMATCHエラーが発生するので、
     // その場合、Content Lengthヘッダーを出力しない
     if (IS_AJAX) {
         unset($headers['Content-Length']);
     }
     // ステータスコードを出力
     $response->setStatusCode($status);
     // ヘッダーをソート
     ksort($headers);
     // ヘッダーを指定
     $response->getHeaders()->addHeaders($headers);
     // ヘッダー出力をチェック
     if (headers_sent($file, $line)) {
         die(sprintf('Header::writeResponse(): ' . $_string['header_sent'], Utility::htmlsc($file), $line));
         exit;
     }
     // ステータスコードを出力
     header($response->renderStatusLine());
     // ヘッダーを出力
     foreach ($response->getHeaders() as $_header) {
         header($_header->toString());
     }
     if (!empty($body)) {
         // 内容を出力
         echo $response->getBody();
     }
     // 出力バッファをフラッシュ
     flush();
     // 終了
     exit;
 }
Пример #28
0
 public function testEventManagerListensOnClassNameByDefault()
 {
     $response = new Response();
     $response->setContent('short circuited!');
     $events = new SharedEventManager();
     $events->attach(get_class($this->controller), 'dispatch', function($e) use ($response) {
         return $response;
     }, 10);
     $this->controller->events()->setSharedManager($events);
     $result = $this->controller->dispatch($this->request, $this->response);
     $this->assertSame($response, $result);
 }
Пример #29
0
 /**
  * @param MvcEvent $e
  * @return Response, \Zend\Json\Server\Response
  */
 public function onPreDispatch(MvcEvent $e)
 {
     /**
      * @var Response $response
      */
     $routeMatch = $e->getRouteMatch();
     $controller = strtolower($routeMatch->getParam('controller'));
     $action = strtolower($routeMatch->getParam('action'));
     $serviceManager = $e->getApplication()->getServiceManager();
     $request = $serviceManager->get('Request');
     $serverParam = $request->getServer();
     $serviceUserAuthentication = $serviceManager->get('library_backoffice_auth');
     $aclManager = new Aclmanager($serviceManager);
     $loginRequired = false;
     $homeRedirect = false;
     if ($serviceUserAuthentication->hasIdentity()) {
         if (!$serviceUserAuthentication->getIdentity()) {
             $role = ROLE_GUEST;
         } else {
             $role = $serviceUserAuthentication->getIdentity()->id;
         }
         if (!$aclManager->hasResource($controller) || !$aclManager->isAllowed($role, $controller, $action)) {
             $homeRedirect = true;
         }
     } else {
         $role = ROLE_GUEST;
         if (!$aclManager->hasResource($controller) || !$aclManager->isAllowed($role, $controller, $action)) {
             $loginRequired = true;
         }
     }
     // store user's last visited url in session
     if (!in_array($controller, ['controller_backofficeuser_authentication']) && !$serviceManager->get('request')->isXmlHttpRequest()) {
         $session_last_visit = Helper::getSessionContainer('last_visit');
         $session_last_visit->last_visit_url = $serverParam->get('REQUEST_URI');
     }
     if ($loginRequired) {
         if ($serviceManager->get('request')->isXmlHttpRequest()) {
             $response = new Response();
             $response->setContent('{"message":"_LOGIN_REQUIRED_", "aaData":[]}');
             return $response;
         } else {
             $url = $e->getRouter()->assemble([], ['name' => 'backoffice_user_login']);
             $response = $e->getResponse();
             if ($serverParam->get('REQUEST_URI') != '/') {
                 $url = $url . '?request_url=' . $serverParam->get('REQUEST_URI');
             }
             $response->getHeaders()->addHeaderLine('Location', $url);
             $response->setStatusCode(302);
             $response->sendHeaders();
             return $response;
         }
     }
     if ($homeRedirect) {
         $url = $e->getRouter()->assemble([], ['name' => 'backoffice_user_login']);
         $response = $e->getResponse();
         $response->getHeaders()->addHeaderLine('Location', $url);
         $response->setStatusCode(302);
         $response->sendHeaders();
         return $response;
     }
 }
Пример #30
0
 /**
  * 認証要求
  * @return void
  */
 public static function notAuth($realm)
 {
     global $_string, $_title, $_button, $vars;
     $response = new Response();
     // URLが空の場合、ページのアドレスか、スクリプトのアドレスを返す
     if (empty($url)) {
         $url = isset($vars['page']) ? Router::get_resolve_uri(null, $vars['page']) : Router::get_script_uri();
     }
     $s_url = self::htmlsc($url);
     $response->setStatusCode(Response::STATUS_CODE_301);
     $response->getHeaders()->addHeaderLine('Location', $s_url);
     $html = array();
     $html[] = '<!doctype html>';
     $html[] = '<html>';
     $html[] = '<head>';
     $html[] = '<meta charset="utf-8">';
     $html[] = '<meta name="robots" content="noindex,nofollow,noarchive,noodp,noydir" />';
     if (!DEBUG) {
         $html[] = '<meta http-equiv="refresh" content="' . $time . '; URL=' . $s_url . '" />';
     }
     $html[] = '<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/' . Render::TWITTER_BOOTSTRAP_VER . '/css/bootstrap.min.css" type="text/css" />';
     $html[] = '<title>' . $_title['redirect'] . '</title>';
     $html[] = '</head>';
     $html[] = '<body>';
     $html[] = '<div class="container">';
     $html[] = '<p class="alert alert-success">';
     $html[] = '<span class="glyphicon glyphicon-info-sign"></span>';
     $html[] = $_string['redirect1'] . '<br />';
     $html[] = sprintf($_string['redirect2'], $s_url);
     if (!DEBUG) {
         $html[] = '<br />NOTICE: No auto redirect when Debug mode.';
     }
     $html[] = '</p>';
     $html[] = '</div>';
     $html[] = '</body>';
     $html[] = '</html>';
     $content = join("\n", $html);
     $response->getHeaders()->addHeaderLine('Content-Length', strlen($content));
     $response->setContent($content);
     if (!headers_sent()) {
         header($response->renderStatusLine());
         foreach ($response->getHeaders() as $header) {
             header($header->toString());
         }
     }
     echo $response->getBody();
     exit;
 }