Passed
Push — main ( f54f2d...d212fa )
by Jean-Christophe
02:04
created

AclManager   A

Complexity

Total Complexity 14

Size/Duplication

Total Lines 88
Duplicated Lines 0 %

Test Coverage

Coverage 92.31%

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 21
dl 0
loc 88
ccs 36
cts 39
cp 0.9231
rs 10
c 1
b 0
f 1
wmc 14

13 Methods

Rating   Name   Duplication   Size   Complexity  
A start() 0 3 1
A initFromProviders() 0 7 2
A addRole() 0 2 1
A getPermissions() 0 2 1
A setPermissionLevel() 0 2 1
A allow() 0 2 1
A getAcls() 0 2 1
A addResource() 0 2 1
A getRoles() 0 2 1
A getResources() 0 2 1
A isAllowed() 0 2 1
A addPermission() 0 2 1
A saveAll() 0 2 1
1
<?php
2
namespace Ubiquity\security\acl;
3
4
use Ubiquity\security\acl\models\AclList;
5
use Ubiquity\security\acl\models\Role;
6
use Ubiquity\security\acl\models\Resource;
7
use Ubiquity\security\acl\models\Permission;
8
use Ubiquity\security\acl\models\AclElement;
9
use Ubiquity\security\acl\persistence\AclProviderInterface;
10
11
/**
12
 * Ubiquity\security\acl$AclManager
13
 * This class is part of Ubiquity
14
 *
15
 * @author jc
16
 * @version 1.0.0
17
 *
18
 */
19
class AclManager {
20
21
	/**
22
	 *
23
	 * @var AclList
24
	 */
25
	protected static $aclList;
26
27
	/**
28
	 * Create AclList with default roles and resources.
29
	 */
30 9
	public static function start(): void {
31 9
		self::$aclList = new AclList();
32 9
		self::$aclList->init();
33 9
	}
34
35
	/**
36
	 * Load acls, roles, resources and permissions from providers.
37
	 *
38
	 * @param AclProviderInterface[] $providers
39
	 */
40 2
	public static function initFromProviders(?array $providers = []): void {
41 2
		self::$aclList->setProviders($providers);
42 2
		if (\count($providers) > 0) {
43 1
			self::$aclList->loadAcls();
44 1
			self::$aclList->loadRoles();
45 1
			self::$aclList->loadResources();
46 1
			self::$aclList->loadPermissions();
47
		}
48 2
	}
49
50 3
	public static function addRole(string $name, ?array $parents = []) {
51 3
		self::$aclList->addRole(new Role($name, $parents));
52 3
	}
53
54 4
	public static function addResource(string $name, ?string $value = null) {
55 4
		self::$aclList->addResource(new Resource($name, $value));
56 4
	}
57
58 3
	public static function addPermission(string $name, int $level = 0) {
59 3
		self::$aclList->addPermission(new Permission($name, $level));
60 3
	}
61
62 1
	public static function setPermissionLevel(string $name, int $level) {
63 1
		self::$aclList->setPermissionLevel($name, $level);
64
	}
65
66 1
	public static function getRoles() {
67 1
		return self::$aclList->getRoles();
68
	}
69
70 1
	public static function getResources() {
71 1
		return self::$aclList->getResources();
72
	}
73
74 1
	public static function getPermissions() {
75 1
		return self::$aclList->getPermissions();
76
	}
77
78 2
	public static function getAcls() {
79 2
		return self::$aclList->getAcls();
80
	}
81
82
	/**
83
	 * Allow role to access to resource with the permission.
84
	 *
85
	 * @param string $role
86
	 * @param string $resource
87
	 * @param string $permission
88
	 */
89 4
	public static function allow(string $role, ?string $resource = '*', ?string $permission = 'ALL') {
90 4
		self::$aclList->allow($role, $resource ?? '*', $permission ?? 'ALL');
91 4
	}
92
93
	/**
94
	 * Check if access to resource is allowed for role with the permission.
95
	 *
96
	 * @param string $role
97
	 * @param string $resource
98
	 * @param string $permission
99
	 * @return bool
100
	 */
101 8
	public static function isAllowed(string $role, ?string $resource = '*', ?string $permission = 'ALL'): bool {
102 8
		return self::$aclList->isAllowed($role, $resource ?? '*', $permission ?? 'ALL');
103
	}
104
105
	public static function saveAll() {
106
		self::$aclList->saveAll();
107
	}
108
}
109
110