first commit
This commit is contained in:
63
database/seeders/RolesAndPermissionsSeeder.php
Normal file
63
database/seeders/RolesAndPermissionsSeeder.php
Normal file
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
use Spatie\Permission\Models\Permission;
|
||||
use Spatie\Permission\Models\Role;
|
||||
use Spatie\Permission\PermissionRegistrar;
|
||||
|
||||
/**
|
||||
* Базовая ролевая модель (RBAC) по разделу 4.2 гайда.
|
||||
*
|
||||
* Меры ФСТЭК: УПД.4 (разделение ролей), УПД.5 (наименьшие привилегии),
|
||||
* разделение обязанностей (оператор работает с ПДн, аудитор — только журналы).
|
||||
*/
|
||||
class RolesAndPermissionsSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
app(PermissionRegistrar::class)->forgetCachedPermissions();
|
||||
|
||||
$permissions = [
|
||||
// Работа с персональными данными.
|
||||
'pdn.view',
|
||||
'pdn.create',
|
||||
'pdn.update',
|
||||
'pdn.delete',
|
||||
'pdn.export',
|
||||
// Администрирование пользователей и прав (УПД.13).
|
||||
'users.manage',
|
||||
'roles.manage',
|
||||
// Просмотр журналов аудита.
|
||||
'audit.view',
|
||||
];
|
||||
|
||||
foreach ($permissions as $permission) {
|
||||
Permission::findOrCreate($permission, 'web');
|
||||
}
|
||||
|
||||
// super_admin — только для DBA, не выдаётся через веб-интерфейс.
|
||||
$superAdmin = Role::findOrCreate('super_admin', 'web');
|
||||
$superAdmin->givePermissionTo(Permission::all());
|
||||
|
||||
// admin — управление пользователями, полный доступ к ПДн.
|
||||
$admin = Role::findOrCreate('admin', 'web');
|
||||
$admin->givePermissionTo([
|
||||
'pdn.view', 'pdn.create', 'pdn.update', 'pdn.delete', 'pdn.export',
|
||||
'users.manage', 'roles.manage',
|
||||
]);
|
||||
|
||||
// operator — работа с ПДн в рамках задач, без управления пользователями.
|
||||
$operator = Role::findOrCreate('operator', 'web');
|
||||
$operator->givePermissionTo(['pdn.view', 'pdn.create', 'pdn.update']);
|
||||
|
||||
// auditor — только чтение журналов (разделение обязанностей).
|
||||
$auditor = Role::findOrCreate('auditor', 'web');
|
||||
$auditor->givePermissionTo(['audit.view']);
|
||||
|
||||
// user — доступ только к своим данным.
|
||||
$user = Role::findOrCreate('user', 'web');
|
||||
$user->givePermissionTo(['pdn.view']);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user