Passed
Push — main ( 8815d3...d06024 )
by Jean-Christophe
02:38
created

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