ILIAS  release_10 Revision v10.1-43-ga1241a92c2f
class.ilWhiteListUrlValidator.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
26 {
28  private array $whitelist;
29 
34  public function __construct(private string $url, array $whitelist)
35  {
36  $this->whitelist = array_filter(array_map(static function (string $domain): string {
37  return trim($domain); // Used for trimming and type validation (strict primitive type hint)
38  }, $whitelist));
39  }
40 
41  private function isValidDomain(string $domain): bool
42  {
43  foreach ($this->whitelist as $validDomain) {
44  if ($domain === $validDomain) {
45  return true;
46  }
47 
48  $firstChar = $validDomain[0];
49  if ('.' !== $firstChar) {
50  $validDomain = '.' . $validDomain;
51  }
52 
53  if ((strlen($domain) > strlen($validDomain)) && substr(
54  $domain,
55  (0 - strlen($validDomain))
56  ) === $validDomain) {
57  return true;
58  }
59  }
60 
61  return false;
62  }
63 
64  public function isValid(): bool
65  {
66  $redirectDomain = parse_url($this->url, PHP_URL_HOST);
67  if (null === $redirectDomain) {
68  return false;
69  }
70 
71  return $this->isValidDomain($redirectDomain);
72  }
73 }
$url
Definition: shib_logout.php:63
__construct(private string $url, array $whitelist)
ilWhiteListUrlValidator constructor.
Class ilWhiteListUrlValidator.