3 namespace BookStack\Auth\Permissions;
5 use BookStack\Auth\Role;
6 use BookStack\Entities\Models\Entity;
8 class PermissionFormData
10 protected Entity $entity;
12 public function __construct(Entity $entity)
14 $this->entity = $entity;
18 * Get the permissions with assigned roles.
20 public function permissionsWithRoles(): array
22 return $this->entity->permissions()
24 ->where('role_id', '!=', 0)
26 ->sortBy('role.display_name')
31 * Get the roles that don't yet have specific permissions for the
32 * entity we're managing permissions for.
34 public function rolesNotAssigned(): array
36 $assigned = $this->entity->permissions()->pluck('role_id');
38 ->where('system_name', '!=', 'admin')
39 ->whereNotIn('id', $assigned)
40 ->orderBy('display_name', 'asc')
46 * Get the entity permission for the "Everyone Else" option.
48 public function everyoneElseEntityPermission(): EntityPermission
50 /** @var ?EntityPermission $permission */
51 $permission = $this->entity->permissions()
52 ->where('role_id', '=', 0)
54 return $permission ?? (new EntityPermission());
58 * Get the "Everyone Else" role entry.
60 public function everyoneElseRole(): Role
62 return (new Role())->forceFill([
64 'display_name' => trans('entities.permissions_role_everyone_else'),
65 'description' => trans('entities.permissions_role_everyone_else_desc'),