Shoved EEPROM into Misuzu.
This commit is contained in:
parent
0b7031959b
commit
5f6133c007
63 changed files with 3893 additions and 222 deletions
src/Routing
48
src/Routing/RoutingAccessControlHandler.php
Normal file
48
src/Routing/RoutingAccessControlHandler.php
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?php
|
||||
namespace Misuzu\Routing;
|
||||
|
||||
use Index\Config\Config;
|
||||
use Index\Http\HttpUri;
|
||||
use Index\Http\Routing\HandlerContext;
|
||||
use Index\Http\Routing\Routes\RouteInfo;
|
||||
use Index\Http\Routing\AccessControl\{AccessControl,SimpleAccessControlHandler};
|
||||
|
||||
class RoutingAccessControlHandler extends SimpleAccessControlHandler {
|
||||
public function __construct(
|
||||
private Config $config,
|
||||
) {}
|
||||
|
||||
/** @param string[] $origins */
|
||||
public static function filterOrigin(array $origins, HttpUri $origin): ?string {
|
||||
$host = '.' . $origin->host;
|
||||
foreach($origins as $allowed)
|
||||
if(str_ends_with($host, '.' . $allowed))
|
||||
return (string)$origin;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
#[\Override]
|
||||
public function checkAccess(
|
||||
HandlerContext $context,
|
||||
AccessControl $accessControl,
|
||||
HttpUri $origin,
|
||||
?RouteInfo $routeInfo = null,
|
||||
): string|bool {
|
||||
if($accessControl->credentials) {
|
||||
$result = null;
|
||||
if($context->request->requestTarget === '/_sockchat'
|
||||
|| str_starts_with($context->request->requestTarget, '/_sockchat/')) {
|
||||
$result = self::filterOrigin($this->config->getArray('sockChat.origins'), $origin);
|
||||
} elseif($context->request->requestTarget === '/storage'
|
||||
|| str_starts_with($context->request->requestTarget, '/storage/')) {
|
||||
$result = self::filterOrigin($this->config->getArray('storage.origins'), $origin);
|
||||
}
|
||||
|
||||
if($result !== null)
|
||||
return $result;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue