Passed
Push — main ( 6cee10...25dcc1 )
by Jean-Christophe
02:23
created

AclElement::setPermission()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 2
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
namespace Ubiquity\security\acl\models;
3
4
class AclElement {
5
6
	/**
7
	 *
8
	 * @id
9
	 * @column("name"=>"id","nullable"=>false,"dbType"=>"int(11)")
10
	 */
11
	protected $id;
12
13
	/**
14
	 *
15
	 * @var Role
16
	 * @manyToOne
17
	 * @joinColumn("className"=>"Ubiquity\\security\\acl\\models\\Role","name"=>"idRole","nullable"=>false)
18
	 */
19
	protected $role;
20
21
	/**
22
	 *
23
	 * @var Permission
24
	 * @manyToOne
25
	 * @joinColumn("className"=>"Ubiquity\\security\\acl\\models\\Permission","name"=>"idPermission","nullable"=>false)
26
	 */
27
	protected $permission;
28
29
	/**
30
	 *
31
	 * @var \Ubiquity\security\acl\models\Resource
32
	 * @manyToOne
33
	 * @joinColumn("className"=>"Ubiquity\\security\\acl\\models\\Resource","name"=>"idResource","nullable"=>false)
34
	 */
35
	protected $resource;
36
37
	/**
38
	 *
39
	 * @return Role
40
	 *
41
	 */
42 16
	public function getRole() {
43 16
		return $this->role;
44
	}
45
46
	/**
47
	 *
48
	 * @return Permission
49
	 */
50 15
	public function getPermission() {
51 15
		return $this->permission;
52
	}
53
54
	/**
55
	 *
56
	 * @return \Ubiquity\security\acl\models\Resource
57
	 */
58 16
	public function getResource() {
59 16
		return $this->resource;
60
	}
61
62 6
	public function fromArray($aclArray) {
63 6
		$role = new Role();
64 6
		$role->fromArray($aclArray['role']);
65 6
		$resource = new Resource();
66 6
		$resource->fromArray($aclArray['resource']);
67 6
		$permission = new Permission();
68 6
		$permission->fromArray($aclArray['permission']);
69 6
		$this->role = $role;
70 6
		$this->permission = $permission;
71 6
		$this->resource = $resource;
72 6
		$this->_fromArray = true;
73 6
	}
74
75 4
	public function toArray(): array {
76
		return [
77 4
			'resource' => $this->resource->toArray(),
78 4
			'role' => $this->role->toArray(),
79 4
			'permission' => $this->permission->toArray()
80
		];
81
	}
82
83 13
	public function allow(Role $role, Resource $resource, Permission $permission) {
84 13
		$this->role = $role;
85 13
		$this->resource = $resource;
86 13
		$this->permission = $permission;
87 13
	}
88
89
	/**
90
	 *
91
	 * @return mixed
92
	 */
93 1
	public function getId() {
94 1
		return $this->id;
95
	}
96
97
	/**
98
	 *
99
	 * @param mixed $id
100
	 */
101 4
	public function setId($id) {
102 4
		$this->id = $id;
103 4
	}
104
105
	/**
106
	 *
107
	 * @param \Ubiquity\security\acl\models\Role $role
108
	 */
109 4
	public function setRole($role) {
110 4
		$this->role = $role;
111 4
	}
112
113
	/**
114
	 *
115
	 * @param \Ubiquity\security\acl\models\Permission $permission
116
	 */
117 4
	public function setPermission($permission) {
118 4
		$this->permission = $permission;
119 4
	}
120
121
	/**
122
	 *
123
	 * @param \Ubiquity\security\acl\models\Resource $resource
124
	 */
125 4
	public function setResource($resource) {
126 4
		$this->resource = $resource;
127 4
	}
128
129 6
	public function getId_() {
130 6
		$id = '';
131 6
		if (isset($this->role)) {
132 6
			$id = $this->role->getName();
133
		}
134 6
		if (isset($this->resource)) {
135 6
			$id .= $this->resource->getName();
136
		}
137 6
		if (isset($this->permission)) {
138 6
			$id .= $this->permission->getName();
139
		}
140 6
		return \crc32($id) . '.';
141
	}
142
143 1
	public function castAs(string $class) {
144 1
		return unserialize(sprintf('O:%d:"%s"%s', \strlen($class), $class, \strstr(\strstr(\serialize($this), '"'), ':')));
145
	}
146
}
147
148