mercureact/src/Broker/Security/ClaimChecker.php

46 lines
1.2 KiB
PHP

<?php
namespace NoccyLabs\Mercureact\Broker\Security;
use NoccyLabs\SimpleJWT\JWTToken;
use Rize\UriTemplate\UriTemplate;
class ClaimChecker
{
private UriTemplate $uriTemplate;
public function __construct()
{
$this->uriTemplate = new UriTemplate();
}
public function matchAll(array $topics, array $claims): bool
{
$matched = 0;
foreach ((array)$topics as $match) {
foreach ($claims as $claim) {
if (($claim === "*")
|| ($claim === $match)
|| ($this->uriTemplate->extract($claim, $match, true))) {
$matched++;
break;
}
}
}
return ($matched == count($topics));
}
public function matchOne(array $topics, array $claims): bool
{
foreach ((array)$topics as $match) {
foreach ($claims as $claim) {
if (($claim === "*")
|| ($claim === $match)
|| ($this->uriTemplate->extract($claim, $match, true))) {
return true;
}
}
}
return false;
}
}