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]);
}
}
}