Nelmio\SecurityBundle\EventListener\ExternalRedirectListener::isExternalRedirect PHP Method

isExternalRedirect() public method

public isExternalRedirect ( $source, $target )
    public function isExternalRedirect($source, $target)
    {
        // handle protocol-relative URLs that parse_url() doesn't like
        if (substr($target, 0, 2) === '//') {
            $target = 'proto:' . $target;
        }
        $target = parse_url($target);
        if (!isset($target['host'])) {
            return false;
        }
        $source = parse_url($source);
        if (!isset($source['host'])) {
            throw new \LogicException('The source url must include a host name.');
        }
        return $source['host'] !== $target['host'];
    }

Usage Example

 /**
  * @dataProvider provideRedirectMatcher
  */
 public function testRedirectMatcher($source, $target, $expected)
 {
     $listener = new ExternalRedirectListener(true);
     $result = $listener->isExternalRedirect($source, $target);
     $this->assertSame($expected, $result);
 }