Skip to content

Commit 4ee0913

Browse files
committed
add Acls attributes
1 parent 7e1fe5c commit 4ee0913

File tree

5 files changed

+124
-2
lines changed

5 files changed

+124
-2
lines changed

src/Ubiquity/attributes/AttributesEngine.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,5 +139,13 @@ public function is(string $key, object $annotation): bool {
139139
}
140140
return false;
141141
}
142+
143+
public function registerAcls(): void {
144+
\array_merge(self::$registry, [
145+
'allow' => \Ubiquity\attributes\items\acl\Allow::class,
146+
'resource' => \Ubiquity\attributes\items\acl\Resource::class,
147+
'permission' => \Ubiquity\attributes\items\acl\Permission::class
148+
]);
149+
}
142150
}
143151

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
namespace Ubiquity\attributes\items\acl;
4+
5+
use Attribute;
6+
use Ubiquity\annotations\BaseAnnotationTrait;
7+
use Ubiquity\attributes\items\BaseAttribute;
8+
9+
/**
10+
* Attribute Allow.
11+
* usages :
12+
* - #[Allow("roleName")]
13+
* - #[Allow(role: "roleName")]
14+
* - #[Allow(role: "roleName",resource: "resourceName",permission: "permissionName")]
15+
* - #[Allow("roleName","resourceName","permissionName")]
16+
*
17+
* @author jc
18+
* @version 1.0.0
19+
*/
20+
#[Attribute(Attribute::TARGET_CLASS | Attribute::TARGET_METHOD | Attribute::IS_REPEATABLE)]
21+
class Allow extends BaseAttribute {
22+
use BaseAnnotationTrait;
23+
24+
public string $role;
25+
26+
public ?string $permission;
27+
28+
public ?string $resource;
29+
30+
/**
31+
* Allow constructor.
32+
* @param string $role
33+
* @param string|null $resource
34+
* @param string|null $permission
35+
*/
36+
public function __construct(string $role, ?string $resource = null, ?string $permission = null) {
37+
$this->role = $role;
38+
$this->resource = $resource;
39+
$this->permission = $permission;
40+
}
41+
42+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
3+
namespace Ubiquity\attributes\items\acl;
4+
5+
use Attribute;
6+
use Ubiquity\annotations\BaseAnnotationTrait;
7+
use Ubiquity\attributes\items\BaseAttribute;
8+
9+
/**
10+
* Attribute Permission.
11+
* usages :
12+
* - #[Permission("permissionName")]
13+
* - #[Permission("permissionName",permissionLevel)]
14+
* - #[Permission(name: "permissionName")]
15+
* - #[Permission(name: "permissionName",level: permissionLevel)]
16+
*
17+
* @author jc
18+
* @version 1.0.0
19+
*/
20+
#[Attribute(Attribute::TARGET_CLASS | Attribute::TARGET_METHOD)]
21+
class Permission extends BaseAttribute {
22+
use BaseAnnotationTrait;
23+
24+
public string $name;
25+
26+
public ?int $level;
27+
28+
/**
29+
* Permission constructor.
30+
* @param string $name
31+
* @param int|null $level
32+
*/
33+
public function __construct(string $name, ?int $level = 0) {
34+
$this->name = $name;
35+
$this->level = $level;
36+
}
37+
38+
39+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
namespace Ubiquity\attributes\items\acl;
4+
5+
6+
use Attribute;
7+
use Ubiquity\annotations\BaseAnnotationTrait;
8+
use Ubiquity\attributes\items\BaseAttribute;
9+
10+
/**
11+
* Attribute Resource.
12+
* usages :
13+
* - #[Resource("resourceName")]
14+
* - #[Resource(name: "resourceName")]
15+
*
16+
* @author jc
17+
* @version 1.0.0
18+
*/
19+
#[Attribute(Attribute::TARGET_CLASS | Attribute::TARGET_METHOD)]
20+
class Resource extends BaseAttribute {
21+
use BaseAnnotationTrait;
22+
23+
public string $name;
24+
25+
/**
26+
* Resource constructor.
27+
* @param string $name
28+
*/
29+
public function __construct(string $name) {
30+
$this->name = $name;
31+
}
32+
33+
}

src/Ubiquity/attributes/items/router/Route.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
* - #[Route("routePath")] default path: ""
1313
* - #[Route(path: "routePath")]
1414
* - #[Route("routePath",methods:["routeMethods"])]
15-
* - #[Route("routePath",cache: true,duration: intValue)]
15+
* - #[Route("routePath",cache: true, duration: intValue)]
1616
* - #[Route("routePath",inherited: true)]
1717
* - #[Route("routePath",automated: true)]
1818
* - #[Route("routePath",requirements: ["member"=>"regExpr"])]
@@ -48,7 +48,7 @@ public function __construct(string $path = '', ?array $methods = null, ?string $
4848

4949
public function getPropertiesAndValues($props = null) {
5050
$r = parent::getPropertiesAndValues($props);
51-
if (is_subclass_of($this, Route::class)) {
51+
if (\is_subclass_of($this, Route::class)) {
5252
unset($r['methods']);
5353
}
5454
return $r;

0 commit comments

Comments
 (0)