예제 #1
0
 /**
  * @param null|string $template
  * @param array       $templateParameters
  *
  * @return array
  */
 private function parseTemplateOptions($template, array $templateParameters)
 {
     if (!array_key_exists('language', $templateParameters) && $this->parameters->has('language')) {
         $templateParameters['language'] = $this->parameters->get('language');
     }
     return ['template' => $template === null ? $this->parameters->get('template') : $template, 'parameters' => new ParameterBag($templateParameters)];
 }
예제 #2
0
 /**
  * @param QueryBuilder $query
  * @param ParameterBag $request
  * @return QueryBuilder
  */
 public function map(QueryBuilder $query, ParameterBag $request)
 {
     if ($request->has('name')) {
         $query->andWhere('o.name LIKE :name')->setParameter('name', '%' . $request->get('name') . '%');
     }
     if ($request->has('login')) {
         $query->andWhere('o.login = :login')->setParameter('login', $request->get('login'));
     }
     return $query;
 }
 /**
  * Send the request with specified data
  *
  * @param  mixed $data The data to send
  *
  * @return ResponseInterface
  * @throws InvalidRequestException
  */
 public function sendData($data)
 {
     $this->verifySignature();
     if ($this->params->has('notify_id')) {
         if ($this->verifyNotifyId) {
             $this->verifyNotifyId();
         }
     }
     return $this->response = new LegacyNotifyResponse($this, $data);
 }
예제 #4
0
 /**
  * @param OAuth2Provider $provider
  * @param ParameterBag $getParams
  * @return OAuth2Token
  * @throws OAuthException
  */
 protected function retrieveToken(OAuth2Provider $provider, ParameterBag $getParams)
 {
     if ($getParams->has('error')) {
         throw OAuthException::createFromError($getParams->get('error'), $getParams->get('error_description'));
     }
     if (!$getParams->has('code')) {
         throw new GrantCodeNotFoundException('The grant code parameter was not found');
     }
     return $provider->retrieveToken($getParams->get('code'));
 }
예제 #5
0
 /**
  * @param QueryBuilder $query
  * @param ParameterBag $request
  * @return QueryBuilder
  */
 public function map(QueryBuilder $query, ParameterBag $request)
 {
     if ($request->has('firstname')) {
         $query->andWhere('u.firstName LIKE :firstname')->setParameter('firstname', '%' . $request->get('firstname') . '%');
     }
     if ($request->has('login')) {
         $query->andWhere('u.login = :login')->setParameter('login', $request->get('login'));
     }
     if ($request->has('lastname')) {
         $query->andWhere('u.lastName LIKE :lastname')->setParameter('lastname', '%' . $request->get('lastname') . '%');
     }
     if ($request->has('name')) {
         $term = str_replace(' ', '%', trim($request->get('name')));
         $query->andWhere('u.firstName LIKE :term OR u.lastName LIKE :term OR u.fullName LIKE :term')->setParameter('term', '%' . $term . '%');
     }
     if ($request->has('branch')) {
         $query->andWhere('u.branch = :branch')->setParameter('branch', $request->get('branch'));
     }
     if ($request->has('level')) {
         $query->andWhere('u.niveau = :level')->setParameter('level', $request->get('level'));
     }
     if ($request->has('speciality')) {
         $query->andWhere('u.filiere = :speciality')->setParameter('speciality', $request->get('speciality'));
     }
     if ($request->has('is_student')) {
         $query->andWhere('u.isStudent = :is_student')->setParameter('is_student', (bool) $request->get('is_student'));
     }
     if ($request->has('bde_member') && $request->get('bde_member') == '1') {
         $query->andWhere('m.end > :now')->setParameter('now', new \DateTime('now'));
     }
     return $query;
 }
 function it_creates_configuration_from_resource_metadata_and_request(MetadataInterface $metadata, Request $request, ParametersParser $parametersParser, ParameterBag $headersBag, ParameterBag $attributesBag)
 {
     $request->headers = $headersBag;
     $request->attributes = $attributesBag;
     $headersBag->has('Accept')->willReturn(false);
     $headersBag->has('Accept')->willReturn(false);
     $configuration = ['template' => ':Product:show.html.twig'];
     $attributesBag->get('_sylius', [])->shouldBeCalled()->willReturn($configuration);
     $parametersParser->parseRequestValues($configuration, $request)->willReturn($configuration);
     $this->create($metadata, $request)->shouldHaveType(RequestConfiguration::class);
 }
예제 #7
0
 function it_can_find_specific_resource_with_slug_by_default(RequestConfiguration $requestConfiguration, Request $request, ParameterBag $requestAttributes, RepositoryInterface $repository, ResourceInterface $resource)
 {
     $requestConfiguration->getRepositoryMethod()->willReturn(null);
     $requestConfiguration->getRequest()->willReturn($request);
     $request->attributes = $requestAttributes;
     $requestAttributes->has('id')->willReturn(false);
     $requestAttributes->has('slug')->willReturn(true);
     $requestAttributes->get('slug')->willReturn('the-most-awesome-hat');
     $repository->findOneBy(array('slug' => 'the-most-awesome-hat'))->willReturn($resource);
     $this->get($requestConfiguration, $repository)->shouldReturn($resource);
 }
예제 #8
0
 /**
  * {@inheritdoc}
  */
 public function determineAccessTokenInHeader(Request $request)
 {
     if ($request->headers->has('Authorization') === false) {
         return;
     }
     $header = $request->headers->get('Authorization');
     if (substr($header, 0, 4) !== 'MAC ') {
         return;
     }
     // Find all the parameters expressed in the header
     $paramsRaw = explode(',', substr($header, 4));
     $params = new ParameterBag();
     array_map(function ($param) use(&$params) {
         $param = trim($param);
         preg_match_all('/([a-zA-Z]*)="([\\w=]*)"/', $param, $matches);
         // @codeCoverageIgnoreStart
         if (count($matches) !== 3) {
             return;
         }
         // @codeCoverageIgnoreEnd
         $key = reset($matches[1]);
         $value = trim(reset($matches[2]));
         if (empty($value)) {
             return;
         }
         $params->set($key, $value);
     }, $paramsRaw);
     // Validate parameters
     if ($params->has('id') === false || $params->has('ts') === false || $params->has('nonce') === false || $params->has('mac') === false) {
         return;
     }
     if ((int) $params->get('ts') !== time()) {
         return;
     }
     $accessToken = $params->get('id');
     $timestamp = (int) $params->get('ts');
     $nonce = $params->get('nonce');
     $signature = $params->get('mac');
     // Try to find the MAC key for the access token
     $macKey = $this->server->getMacStorage()->getByAccessToken($accessToken);
     if ($macKey === null) {
         return;
     }
     // Calculate and compare the signature
     $calculatedSignatureParts = [$timestamp, $nonce, strtoupper($request->getMethod()), $request->getUri(), $request->getHost(), $request->getPort()];
     if ($params->has('ext')) {
         $calculatedSignatureParts[] = $params->get('ext');
     }
     $calculatedSignature = base64_encode(hash_hmac('sha256', implode("\n", $calculatedSignatureParts), $macKey));
     // Return the access token if the signature matches
     return $this->hash_equals($calculatedSignature, $signature) ? $accessToken : null;
 }
예제 #9
0
 public function parseCookies(ParameterBag $cookies)
 {
     $this->setUtm(new Utm());
     if ($cookies->has('__utmz')) {
         $this->utmz($cookies->get('__utmz'));
     }
     if ($cookies->has('__utmb')) {
         $this->utmb($cookies->get('__utmb'));
     }
     if ($cookies->has('__utma')) {
         $this->utma($cookies->get('__utma'));
     }
     return $this->getUtm();
 }
예제 #10
0
파일: Request.php 프로젝트: Gregwar/symfony
    protected function prepareRequestUri()
    {
        $requestUri = '';

        if ($this->headers->has('X_REWRITE_URL')) {
            // check this first so IIS will catch
            $requestUri = $this->headers->get('X_REWRITE_URL');
        } elseif ($this->server->get('IIS_WasUrlRewritten') == '1' && $this->server->get('UNENCODED_URL') != '') {
            // IIS7 with URL Rewrite: make sure we get the unencoded url (double slash problem)
            $requestUri = $this->server->get('UNENCODED_URL');
        } elseif ($this->server->has('REQUEST_URI')) {
            $requestUri = $this->server->get('REQUEST_URI');
            // HTTP proxy reqs setup request uri with scheme and host [and port] + the url path, only use url path
            $schemeAndHttpHost = $this->getScheme().'://'.$this->getHttpHost();
            if (strpos($requestUri, $schemeAndHttpHost) === 0) {
                $requestUri = substr($requestUri, strlen($schemeAndHttpHost));
            }
        } elseif ($this->server->has('ORIG_PATH_INFO')) {
            // IIS 5.0, PHP as CGI
            $requestUri = $this->server->get('ORIG_PATH_INFO');
            if ($this->server->get('QUERY_STRING')) {
                $requestUri .= '?'.$this->server->get('QUERY_STRING');
            }
        }

        return $requestUri;
    }
예제 #11
0
    /**
     * Whether the request contains a Session which was started in one of the
     * previous requests.
     *
     * @return boolean
     *
     * @api
     */
    public function hasPreviousSession()
    {
        // the check for $this->session avoids malicious users trying to fake a session cookie with proper name
        $sessionName = $this->hasSession() ? $this->session->getName() : null;

        return $this->cookies->has($sessionName) && $this->hasSession();
    }
예제 #12
0
 /**
  * Returns helper if it exists or null.
  *
  * @param [type] $method
  *
  * @return AHelper|null
  */
 public function getHelper($method)
 {
     $helper = null;
     if (true === $this->helpers->has($method)) {
         $helper = $this->helpers->get($method);
     }
     return $helper;
 }
 function it_throws_an_exception_when_a_required_object_is_not_found(FilterControllerEvent $event, Request $request, ParameterBag $attributes)
 {
     $event->getRequest()->willReturn($request);
     $request->attributes = $attributes;
     $attributes->get('_security', array())->willReturn(array(array('roles' => array('IS_OWNER'), 'subject' => 'group')));
     $attributes->has('group')->willReturn(false);
     $this->shouldThrow('RuntimeException')->during('checkIfUserIsGranted', array($event));
 }
예제 #14
0
파일: SearchManager.php 프로젝트: ojs/ojs
 /**
  * @return $this
  */
 public function setupQuery()
 {
     if (!$this->requestQuery->has('q')) {
         return $this;
     }
     $this->nativeQueryGenerator->setQuery($this->requestQuery->get('q'));
     return $this;
 }
예제 #15
0
 /**
  * Hash the parameters
  * @param ParameterBag $parameters
  */
 public function setHash(ParameterBag &$parameters)
 {
     if ($parameters->has('secret')) {
         $secret = $this->parameters->get('secret');
         $this->parameters->remove('secret');
         $hash = md5(implode('', array_values($this->parameters->all())) . $secret);
         $this->parameters->set('hash', $hash);
     }
 }
예제 #16
0
 /**
  * @param ParameterBag          $params
  * @param ParamFetcherInterface $paramFetcher
  * @return array
  */
 protected function getRouteParameters(ParameterBag $params, ParamFetcherInterface $paramFetcher)
 {
     $routeParameters = [];
     $requiredParameters = $this->getInternalParameters();
     if ($params->has('_template') && $params->get('_template') instanceof View) {
         $requiredParameters = array_merge($params->get('_template')->getRouteParams());
     }
     foreach ($requiredParameters as $routeParamName) {
         if ($params->has($routeParamName) && $params->get($routeParamName) instanceof ApiListableInterface) {
             $routeParameters[$routeParamName] = $params->get($routeParamName)->getId();
         } elseif ($params->has($routeParamName)) {
             $routeParameters[$routeParamName] = $params->get($routeParamName);
         } elseif (null !== ($value = $paramFetcher->get($routeParamName))) {
             $routeParameters[$routeParamName] = $value;
         }
     }
     return $routeParameters;
 }
 function it_renders_library_search_by_isbn_results(Request $request, ParameterBag $requestQueryParameters, LibraryInterface $library, SearchResults $searchResults, EngineInterface $templatingEngine, Response $response)
 {
     $request->query = $requestQueryParameters;
     $requestQueryParameters->has('isbn')->willReturn(true);
     $requestQueryParameters->get('isbn')->willReturn('978-1-56619-909-4');
     $library->searchByIsbn(new Isbn('978-1-56619-909-4'))->willReturn($searchResults);
     $templatingEngine->renderResponse('search.html.twig', ['results' => $searchResults])->willReturn($response);
     $this->searchByIsbnAction($request)->shouldReturn($response);
 }
예제 #18
0
 /**
  * @param ParameterBag $cookies
  * @return BreadCrumb[]
  */
 private function readCrumbs(ParameterBag $cookies)
 {
     if (!$cookies->has(self::COOKIE_NAME)) {
         return [];
     }
     $serialized = json_decode($cookies->get(self::COOKIE_NAME), true);
     return array_map(function ($item) {
         return new BreadCrumb($item['caption'], $item['target']);
     }, (array) $serialized);
 }
 function it_should_decrypt_a_cookie(GetResponseEvent $event, Request $request, ParameterBag $cookies)
 {
     $cookies->get('session')->willReturn('dGVzdA==');
     $cookies->has('session')->willReturn(true);
     $cookies->set('session', 'test')->shouldBeCalled();
     $request->cookies = $cookies;
     $event->getRequest()->willReturn($request);
     $event->getRequestType()->willReturn(HttpKernelInterface::MASTER_REQUEST);
     $this->onKernelRequest($event)->shouldReturn(null);
 }
예제 #20
0
 /**
  * @param \Symfony\Component\HttpKernel\Event\GetResponseEvent $event
  * @param \Symfony\Component\HttpFoundation\Request $request
  * @param \Symfony\Component\HttpFoundation\ParameterBag $requestAttributes
  * @param \Symfony\Component\HttpFoundation\Session\Session $session
  */
 function it_does_not_set_locale_if_request_alread_has_locale($event, $request, $requestAttributes, $session)
 {
     $request->attributes = $requestAttributes;
     $requestAttributes->has('_locale')->willReturn(true);
     $event->getRequest()->willReturn($request);
     $request->hasPreviousSession()->willReturn(true);
     $request->getSession()->willReturn($session);
     $request->setLocale(Argument::any())->shouldNotBeCalled();
     $this->onKernelRequest($event);
 }
예제 #21
0
 function it_should_properly_convert_parameter(Request $request, ParamConverter $paramConverter, Project $project, ProjectRepository $projectRepository, ParameterBag $parameterBag)
 {
     $parameterBag->has('projectSlug')->willReturn(true);
     $parameterBag->get('projectSlug')->willReturn('foobar');
     $parameterBag->set(Argument::type('string'), Argument::any())->shouldBeCalled();
     $request->attributes = $parameterBag;
     $projectRepository->findOneBy(['slug' => 'foobar'])->willReturn($project);
     $paramConverter->getClass()->willReturn('CiTron\\Project\\Entity\\Project');
     $paramConverter->getName()->willReturn('project');
     $this->apply($request, $paramConverter)->shouldReturn(true);
 }
예제 #22
0
 /**
  * {@inheritdoc}
  */
 public function decorate(ParameterBag $params, $collection)
 {
     if (!$collection instanceof CollectionRepresentation || !$params->has('_route')) {
         return $collection;
     }
     try {
         return new OffsetRepresentation($collection, $params->get('_route'), $this->getRouteParameters($params, $this->paramFetcher), $this->paramFetcher->get($this->offsetParameterName), $this->paramFetcher->get($this->limitParameterName), null, $this->offsetParameterName, $this->limitParameterName);
     } catch (InvalidArgumentException $exception) {
         return $collection;
     }
 }
 /**
  * {@inheritdoc}
  */
 public function transform(ParameterBag $item)
 {
     $transformer = new EmptyValueToNullTransformer();
     // check for any default values that could be set
     foreach ($this->defaultValues as $key => $value) {
         // only set when it's not existing in the data or has no value
         if (!$item->has($key) || null === $transformer->transform($item->get($key), $key, $item) || $this->overwrite) {
             $item->set($key, $value);
         }
     }
 }
예제 #24
0
 private function handleShows($path, ParameterBag $query)
 {
     if ($path == '/shows' && $query->has('showid')) {
         return $this->createShowResponseFromId($query->get('showid'));
     } elseif ($path == '/shows/view/person') {
         return $this->createPersonResponseFromId($query->get('person'));
     } else {
         $ref = substr($path, 7);
         return $this->createShowResponseFromRef($ref);
     }
 }
 /**
  * Creates array of parameters with values from query.
  *
  * @param \Symfony\Component\HttpFoundation\ParameterBag $query
  *
  * @return \Symfony\Component\HttpFoundation\ParameterBag
  */
 private function getParamsFromQuery(ParameterBag $query)
 {
     $params = new ParameterBag();
     foreach ($this->preserve as $key) {
         if ($query->has($key)) {
             $val = htmlspecialchars($query->get($key));
             $params->set($key, $val);
         }
     }
     return $params;
 }
예제 #26
0
 /**
  * @param array        $value
  * @param ParameterBag $item
  */
 protected function expand(array $value, ParameterBag $item)
 {
     foreach ($value as $key => $val) {
         // if key already exists, check if we may overwrite it
         if ($item->has($key)) {
             if (!in_array($key, $this->overwriteExisting)) {
                 continue;
             }
         }
         $item->set($key, $val);
     }
 }
예제 #27
0
 /**
  * Extract managed extensions from rendererAdapter and store it.
  *
  * @param RendererAdapterInterface $rendererAdapter
  */
 private function addManagedExtensions(RendererAdapterInterface $rendererAdapter)
 {
     $key = $this->getRendererAdapterKey($rendererAdapter);
     foreach ($rendererAdapter->getManagedFileExtensions() as $ext) {
         $rendererAdapters = array($key);
         if ($this->manageableExt->has($ext)) {
             $rendererAdapters = $this->manageableExt->get($ext);
             $rendererAdapters[] = $key;
         }
         $this->manageableExt->set($ext, $rendererAdapters);
     }
 }
 /**
  * @param ParameterBag $item
  * @param array        $keys
  */
 protected function replace(ParameterBag $item, array $keys)
 {
     foreach ($keys as $key) {
         if (!$item->has($key)) {
             continue;
         }
         $value = $item->get($key);
         // if value is an array with a hash, that's a serialized node's text value
         if (is_array($value) && array_key_exists('#', $value)) {
             $item->set($key, $value['#']);
         }
     }
 }
예제 #29
0
파일: Mail.php 프로젝트: nuxia/nuxia-plugin
 /**
  * @return \Swift_Message
  */
 public function createSwitfMessage()
 {
     $template = $this->loadTemplate();
     $swiftMessage = \Swift_Message::newInstance();
     if (!$this->templateOptions->has('subject')) {
         $this->templateOptions->set('subject', $template->renderBlock('subject', $this->getTemplateParameters()));
     }
     $this->setRecipients($swiftMessage);
     $swiftMessage->setSubject($this->templateOptions->get('subject'));
     $swiftMessage->setBody($template->render($this->getTemplateParameters()), 'text/html');
     $swiftMessage->getHeaders()->addTextHeader('Content-language', $this->templateOptions->get('parameters')->get('language'));
     $swiftMessage->addPart($template->renderBlock('content_text', $this->getTemplateParameters()), 'text/plain');
     return $swiftMessage;
 }
예제 #30
0
 /**
  * @param ParameterBag $item
  *
  * @throws TransformationFailedException
  */
 public function transform(ParameterBag $item)
 {
     if (!$item->has($this->field)) {
         return;
     }
     $value = $item->get($this->field);
     try {
         $newValue = $this->transformer->transform($value);
         $item->set($this->field, $newValue);
     } catch (TransformationFailedException $e) {
         // set the value to null as we couldn't transform it
         $item->set($this->field, null);
         throw new TransformationFailedException(sprintf('Transforming "%s" using "%s" failed with message: %s.', $this->field, get_class($this->transformer), $e->getMessage()), null, $e);
     }
 }