Bristol SU Support Package
PermissionStore.php
Go to the documentation of this file.
1 <?php
2 
4 
7 
12 {
13 
19  private $permissions = [];
20 
30  public function registerSitePermission(string $ability, string $name, string $description): void
31  {
32  $permission = resolve(Permission::class, [
33  'ability' => $ability,
34  'name' => $name,
35  'description' => $description,
36  'type' => 'global'
37  ]);
38  $this->registerPermission($permission);
39  }
40 
47  public function registerPermission(Permission $permission): void
48  {
49  $this->permissions[$permission->getAbility()] = $permission;
50  }
51 
62  public function registerModulePermission(string $ability, string $name, string $description, string $alias, bool $admin = false): void
63  {
64  $permission = resolve(Permission::class, [
65  'ability' => $ability,
66  'name' => $name,
67  'description' => $description,
68  'type' => 'module',
69  'alias' => $alias,
70  'moduleType' => ($admin ? 'administrator' : 'participant')
71  ]);
72  $this->registerPermission($permission);
73  }
74 
85  public function register(string $ability, string $name, string $description, string $alias, bool $admin = false): void
86  {
87  $this->registerModulePermission($ability, $name, $description, $alias, $admin);
88  }
89 
97  public function get(string $ability): Permission
98  {
99  if (array_key_exists($ability, $this->permissions)) {
100  return $this->permissions[$ability];
101  }
102  throw new \Exception('Permission '.$ability.' not registered');
103  }
104 
110  public function all(): array
111  {
112  return $this->permissions;
113  }
114 }
registerModulePermission(string $ability, string $name, string $description, string $alias, bool $admin=false)
registerSitePermission(string $ability, string $name, string $description)