HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/ipsremont-demo/database/seeds/RolesConstructor.php
<?php

use Illuminate\Database\Seeder;
use \App\Models\Role;
use Illuminate\Support\Facades\DB;

class RolesConstructor extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Role::query()->update(['deletable' => false]);

        Role::whereNotIn('type' , Role::getEditableTypes())->update(['in_constructor' => false]);

        // add new permissions
        $roleAdmin = Role::where('type', Role::admin)->first();

        $permissions = [
            [
                "name"=>'Доступ ко всем подразделениям',
                "slug"=>'branches-all',
                "description"=>'Видит данные ВСЕХ подразделений'
            ],
            [
                "name"=>'Доступ ко всем сервисам',
                "slug"=>'services-all',
                "description"=>'Видит данные ВСЕХ сервисов своего подразделения. Или всех подразделений, если есть доступ'
            ],
            [
                "name"=>'Конструктор ролей доступа',
                "slug"=>'constructor',
                "description"=>'Может создавать новые роли и менять настройки доступа для существующий ролей',
            ]
        ];


        foreach ($permissions as $permission)
        {
            $id = DB::table('permissions')->insertGetId($permission);

            DB::table('roles_permissions')
                ->insert(
                    [
                        "permission_id"=>$id,
                        "role_id"=>$roleAdmin->id
                    ]
                );
        }


        $defaultTypes = [
            'branch' => 'manager',
            'services' => 'manager',
            'warehouses' => 'manager',
            'services-all' => 'manager',
            'services-import' => 'manager',
            'branches-all' => 'manager',

            'orders' => 'both',

            'constructor' => 'hidden',
            'emails' => 'hidden',
            'settings' => 'hidden',
            'users' => 'hidden',
        ];
        foreach ($defaultTypes as $slug => $type) {
            \App\Models\Permission::where('slug', $slug)->update(['type' => $type]);
        }
    }
}