%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/graphicd/public_html/vebto/database/seeders/
Upload File :
Create Path :
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();
    }
}

Zerion Mini Shell 1.0