Permissions.php
1.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
namespace ACP\Access;
final class Permissions
{
public const UPDATE = 'update';
public const USAGE = 'usage';
/**
* @var array
*/
private $permissions;
public function __construct(array $permissions = [])
{
$this->permissions = $permissions;
}
public function with_permission(string $permission): self
{
$permissions = $this->to_array();
$permissions[] = $permission;
return new self($permissions);
}
public function to_array(): array
{
$permissions = array_unique($this->permissions);
return array_filter($permissions, static function ($permission): bool {
return in_array($permission, [self::USAGE, self::UPDATE], true);
});
}
public function has_permission(string $permission): bool
{
return in_array($permission, $this->permissions, true);
}
public function has_usage_permission(): bool
{
return $this->has_permission(self::USAGE);
}
public function has_updates_permission(): bool
{
return $this->has_permission(self::UPDATE);
}
}