Bristol SU Support Package
src
Permissions
Testers
ModuleInstancePermissions.php
Go to the documentation of this file.
1
<?php
2
3
namespace
BristolSU\Support\Permissions\Testers
;
4
5
use
BristolSU\ControlDB\Contracts\Models\Group
;
6
use
BristolSU\ControlDB\Contracts\Models\Role
;
7
use
BristolSU\ControlDB\Contracts\Models\User
;
8
use
BristolSU\Support\Logic\Contracts\LogicTester
;
9
use
BristolSU\Support\ModuleInstance\ModuleInstance
;
10
use
BristolSU\Support\Permissions\Contracts\Models\Permission
;
11
use
BristolSU\Support\Permissions\Contracts\Tester
;
12
use
Illuminate\Database\Eloquent\ModelNotFoundException
;
13
17
class
ModuleInstancePermissions
extends
Tester
18
{
19
25
private
$logicTester
;
26
30
public
function
__construct
(
LogicTester
$logicTester
)
31
{
32
$this->logicTester =
$logicTester
;
33
}
34
47
public
function
can
(
Permission
$permission, ?User $user, ?Group $group, ?Role $role): ?bool
48
{
49
$moduleInstance = app(ModuleInstance::class);
50
if
($moduleInstance->exists ===
false
) {
51
return
null;
52
}
53
54
try
{
55
$permissionValue = $moduleInstance->moduleInstancePermissions()
56
->where(
'ability'
, $permission->
getAbility
())->firstOrFail();
57
if
($permissionValue->logic !== null) {
58
return
$this->logicTester->evaluate($permissionValue->logic, $user, $group, $role);
59
60
}
61
}
catch
(ModelNotFoundException $e) {}
62
63
return
null;
64
}
65
}
Permission
BristolSU\Support\Permissions\Testers
Definition:
ModuleInstanceGroupOverridePermission.php:3
BristolSU\Support\Logic\Contracts\LogicTester
Definition:
LogicTester.php:13
BristolSU\Support\Permissions\Contracts\Models\Permission\getAbility
getAbility()
User
ModelNotFoundException
Group
BristolSU\Support\Permissions\Testers\ModuleInstancePermissions\can
can(Permission $permission, ?User $user, ?Group $group, ?Role $role)
Definition:
ModuleInstancePermissions.php:47
Role
BristolSU\Support\Permissions\Testers\ModuleInstancePermissions\$logicTester
$logicTester
Definition:
ModuleInstancePermissions.php:25
BristolSU\Support\Permissions\Testers\ModuleInstancePermissions\__construct
__construct(LogicTester $logicTester)
Definition:
ModuleInstancePermissions.php:30
LogicTester
BristolSU\Support\Permissions\Testers\ModuleInstancePermissions
Definition:
ModuleInstancePermissions.php:17
ModuleInstance
BristolSU\Support\Permissions\Contracts\Tester
Definition:
Tester.php:15
BristolSU\Support\Permissions\Contracts\Models\Permission
Definition:
Permission.php:11
Tester
Generated by
1.8.13