The synced permission keys. */ public function syncDiscoveredPermissions(): array { $definitions = array_map( fn (Permission $p): array => [ 'key' => $p->key, 'domain' => $p->domain(), 'action' => $p->action(), 'label' => $p->displayName, 'projectScoped' => $p->projectScoped, ], array_values($this->registry->all()), ); $keys = $this->repo->syncPermissions($definitions); $this->permissions->flushCache(); return $keys; } /** * Upsert the six built-in roles and additively grant their default permissions from the * central {@see DefaultRolePermissions} matrix. */ public function seedBuiltInRoles(): void { $catalog = array_values($this->registry->all()); $roleIds = []; foreach (DefaultRolePermissions::roles() as $role) { $roleIds[$role['name']] = $this->repo->upsertRole( $role['name'], $role['displayName'], $role['level'], isSystem: true, ); } foreach (DefaultRolePermissions::roles() as $role) { foreach (DefaultRolePermissions::grantsFor($role['name'], $catalog) as $permissionKey) { $this->repo->grant($roleIds[$role['name']], $permissionKey); } } $this->permissions->flushCache(); } }