Skip to content

Commit 800cbf2

Browse files
committed
Added voter
1 parent 3722cb2 commit 800cbf2

File tree

4 files changed

+8
-16
lines changed

4 files changed

+8
-16
lines changed

src/Permission/Interface/PermissionInterface.php

-1
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,4 @@
55
interface PermissionInterface
66
{
77
public function getTitle(): string;
8-
public function getUserField(): ?string;
98
}

src/Permission/Permission.php

-6
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ class Permission implements PermissionInterface
88
{
99
public function __construct(
1010
private readonly string $title,
11-
private readonly ?string $userField = null,
1211
)
1312
{
1413
}
@@ -17,9 +16,4 @@ public function getTitle(): string
1716
{
1817
return $this->title;
1918
}
20-
21-
public function getUserField(): ?string
22-
{
23-
return $this->userField;
24-
}
2519
}

src/Security/Voter/PermissionVoter.php

+5-1
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,18 @@ protected function supports($attribute, $subject): bool
2727

2828
protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool
2929
{
30-
if (!$this->permissionService->isPermission($attribute, $subject)) {
30+
if (!$this->permissionService->isPermission($attribute)) {
3131
return false;
3232
}
3333

3434
/** @var UserRoleFieldInterface $user */
3535
$user = $this->security->getUser();
3636
$userRole = $user->getUserRole();
3737

38+
if ($subject && $subject !== $user) {
39+
return false;
40+
}
41+
3842
if (!in_array($attribute, $userRole->getPermissions())) {
3943
return false;
4044
}

src/Service/PermissionService.php

+3-8
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ public function hisPermission(string $attribute): bool
2222
return true;
2323
}
2424

25-
public function isPermission(string $attribute, mixed $subject = null): bool
25+
public function isPermission(string $attribute): bool
2626
{
2727
if (!$this->hisPermission($attribute)) {
2828
return false;
2929
}
3030

31-
if (!$this->getPermission($attribute, $subject)) {
31+
if (!$this->getPermission($attribute)) {
3232
return false;
3333
}
3434

@@ -45,7 +45,7 @@ private function getExplodeNamePermission(string $attribute): ?array
4545
return $attributeParts;
4646
}
4747

48-
public function getPermission(string $attribute, mixed $subject = null): ?PermissionInterface
48+
public function getPermission(string $attribute): ?PermissionInterface
4949
{
5050
$attributeParts = $this->getExplodeNamePermission($attribute);
5151
if (!$attributeParts) {
@@ -61,11 +61,6 @@ public function getPermission(string $attribute, mixed $subject = null): ?Permis
6161
$permissionGroup = new $permissionGroupClassName();
6262
$permission = $permissionGroup->getPermission($attribute);
6363

64-
if ($permission->getUserField()) {
65-
// TODO: Доделать
66-
dd('Доделать');
67-
}
68-
6964
return $permission;
7065
}
7166
}

0 commit comments

Comments
 (0)