Permissions.php
1.13 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
54
55
56
57
58
59
60
61
62
63
64
65
<?php
namespace ACP\Access;
final class Permissions {
const UPDATE = 'update';
const USAGE = 'usage';
/**
* @var array
*/
private $permissions;
public function __construct( array $permissions = [] ) {
$this->permissions = $permissions;
}
/**
* @param string $permission
*
* @return self
*/
public function with_permission( $permission ) {
$permissions = $this->to_array();
$permissions[] = $permission;
return new self( $permissions );
}
/**
* @return array
*/
public function to_array() {
$permissions = array_unique( $this->permissions );
return array_filter( $permissions, function ( $permission ) {
return in_array( $permission, [ self::USAGE, self::UPDATE ], true );
} );
}
/**
* @param string $permission
*
* @return bool
*/
public function has_permission( $permission ) {
return in_array( (string) $permission, $this->permissions, true );
}
/**
* @return bool
*/
public function has_usage_permission() {
return $this->has_permission( self::USAGE );
}
/**
* @return bool
*/
public function has_updates_permission() {
return $this->has_permission( self::UPDATE );
}
}