1
0
mirror of https://github.com/chylex/Lightning-Tracker.git synced 2024-09-20 22:42:49 +02:00
Lightning-Tracker/src/Session/AbstractPermissionList.php

42 lines
908 B
PHP

<?php
declare(strict_types = 1);
namespace Session;
abstract class AbstractPermissionList{
/** @noinspection PhpUnused */
public abstract static function permitAll(): self;
/** @noinspection PhpUnused */
public abstract static function permitList(array $perms): self;
private bool $override;
/**
* @var string[]
*/
private array $perms;
protected function __construct(bool $override, array $perms){
$this->override = $override;
$this->perms = $perms;
}
protected abstract function getType(): string;
public final function check(string $permission): bool{
return $this->override || in_array($permission, $this->perms, true);
}
public final function require(string $permission): bool{
if ($this->check($permission)){
return true;
}
else{
throw new PermissionException($this->getType().':'.$permission);
}
}
}
?>