%PDF- %PDF-
Direktori : /home/graphicd/public_html/vebto/database/seeders/ |
Current File : /home/graphicd/public_html/vebto/database/seeders/WorkspaceRoleSeeder.php |
<?php namespace Database\Seeders; use Common\Auth\Permissions\Permission; use Common\Auth\Roles\Role; use Common\Core\Values\ValueLists; use Illuminate\Database\Seeder; use Illuminate\Support\Collection; use Str; class WorkspaceRoleSeeder extends Seeder { /** * @var Role */ private $role; public function __construct(Role $role) { $this->role = $role; } /** * Run the database seeds. * * @return void */ public function run() { if ($this->role->where('type', 'workspace')->count() === 0) { $permissions = $this->loadPermissions(); $role = $this->role->create([ 'name' => 'Workspace Admin', 'description' => 'Manage workspace content, members, settings and invite new members.', 'type' => 'workspace', ]); $role->permissions()->sync($permissions); $editorPermissions = $permissions->filter(function(Permission $permission) { return $permission->group !== 'workspace_members'; }); $role = $this->role->create([ 'name' => 'Workspace Editor', 'description' => "Add, edit, move and delete workspace files.", 'type' => 'workspace', ]); $role->permissions()->sync($editorPermissions); $memberPermissions = $permissions->filter(function(Permission $permission) { return $permission->group !== 'workspace_members' && Str::endsWith($permission->name, 'view'); }); $role = $this->role->create([ 'name' => 'Workspace Contributor', 'description' => "Add and edit files.", 'type' => 'workspace', ]); $role->permissions()->sync($memberPermissions); } } private function loadPermissions(): Collection { return app(ValueLists::class)->workspacePermissions(); } }