Обновлен стартовый экран
Переписаны запросы для статистики, отчетов Добавлена интеграция отчета сестры
This commit is contained in:
@@ -2,61 +2,103 @@
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Spatie\Permission\Models\Permission;
|
||||
use Spatie\Permission\Models\Role;
|
||||
|
||||
class PermissionAndRoleSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
Permission::create(['name' => 'Создание отчета']);
|
||||
Permission::create(['name' => 'Редактирование отчета']);
|
||||
Permission::create(['name' => 'Просмотр статистики']);
|
||||
// Сброс кэша перед изменениями
|
||||
app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions();
|
||||
|
||||
Permission::create(['name' => 'Создание и редактирование пользователей']);
|
||||
Permission::create(['name' => 'Создание и редактирование прав и ролей']);
|
||||
Permission::create(['name' => 'Создание и редактирование метрик']);
|
||||
// --- Права ---
|
||||
$permissions = [
|
||||
// Сводный отчёт (дежурный)
|
||||
'report.create' => 'Создание сводного отчёта',
|
||||
'report.edit' => 'Редактирование сводного отчёта (текущий период)',
|
||||
'report.edit.past' => 'Редактирование сводного отчёта за прошлые периоды (+ нежелательные события, пациенты на контроле)',
|
||||
'report.view' => 'Просмотр отчётов',
|
||||
|
||||
$admin = Role::create(['name' => 'admin']);
|
||||
$gv = Role::create(['name' => 'gv']);
|
||||
$zam = Role::create(['name' => 'zam']);
|
||||
$zav = Role::create(['name' => 'zav']);
|
||||
$dej = Role::create(['name' => 'dej']);
|
||||
$nurse = Role::create(['name' => 'nurse']);
|
||||
// Журнал пациентов (мед. сестра)
|
||||
'nurse.report.view' => 'Просмотр журнала пациентов',
|
||||
'nurse.report.create' => 'Создание и редактирование журнала пациентов',
|
||||
'nurse.report.edit.past' => 'Редактирование журнала пациентов за прошлые периоды',
|
||||
|
||||
$admin->givePermissionTo([
|
||||
'Создание отчета',
|
||||
'Редактирование отчета',
|
||||
'Просмотр статистики',
|
||||
'Создание и редактирование пользователей',
|
||||
'Создание и редактирование прав и ролей',
|
||||
'Создание и редактирование метрик',
|
||||
// Общее
|
||||
'stats.view' => 'Просмотр статистики',
|
||||
'users.manage' => 'Управление пользователями',
|
||||
'roles.manage' => 'Управление ролями и правами',
|
||||
'metrics.manage' => 'Управление метриками',
|
||||
];
|
||||
|
||||
foreach ($permissions as $name => $label) {
|
||||
Permission::firstOrCreate(['name' => $name]);
|
||||
}
|
||||
|
||||
// --- Роли (slug совпадает со slug в App\Models\Role) ---
|
||||
$admin = Role::firstOrCreate(['name' => 'admin']); // Администратор
|
||||
$gv = Role::firstOrCreate(['name' => 'gv']); // Главный врач
|
||||
$zam = Role::firstOrCreate(['name' => 'zam']); // Зам. глав. врача
|
||||
$zav = Role::firstOrCreate(['name' => 'zav']); // Заведующий отделением
|
||||
$dej = Role::firstOrCreate(['name' => 'dej']); // Врач-дежурный
|
||||
$nurse = Role::firstOrCreate(['name' => 'nurse']); // Старшая мед. сестра
|
||||
|
||||
// --- Назначение прав ---
|
||||
$admin->syncPermissions(array_keys($permissions));
|
||||
|
||||
// Главный врач: полный доступ к отчётам, статистике, метрикам
|
||||
$gv->syncPermissions([
|
||||
'report.create',
|
||||
'report.edit',
|
||||
'report.edit.past',
|
||||
'report.view',
|
||||
'nurse.report.view',
|
||||
'nurse.report.create',
|
||||
'nurse.report.edit.past',
|
||||
'stats.view',
|
||||
'metrics.manage',
|
||||
]);
|
||||
$gv->givePermissionTo([
|
||||
'Создание отчета',
|
||||
'Редактирование отчета',
|
||||
'Просмотр статистики',
|
||||
|
||||
// Зам. главного врача: то же что и главный врач
|
||||
$zam->syncPermissions([
|
||||
'report.create',
|
||||
'report.edit',
|
||||
'report.edit.past',
|
||||
'report.view',
|
||||
'nurse.report.view',
|
||||
'nurse.report.create',
|
||||
'nurse.report.edit.past',
|
||||
'stats.view',
|
||||
'metrics.manage',
|
||||
]);
|
||||
$zam->givePermissionTo([
|
||||
'Создание отчета',
|
||||
'Редактирование отчета',
|
||||
'Просмотр статистики',
|
||||
|
||||
// Заведующий отделением: создание/редактирование отчётов своего отделения
|
||||
$zav->syncPermissions([
|
||||
'report.create',
|
||||
'report.edit',
|
||||
'report.edit.past',
|
||||
'report.view',
|
||||
'nurse.report.view',
|
||||
'nurse.report.create',
|
||||
'nurse.report.edit.past',
|
||||
'stats.view',
|
||||
]);
|
||||
$zav->givePermissionTo([
|
||||
'Создание отчета',
|
||||
'Редактирование отчета',
|
||||
'Просмотр статистики',
|
||||
|
||||
// Врач-дежурный: создание сводного + просмотр журнала (без редактирования)
|
||||
$dej->syncPermissions([
|
||||
'report.create',
|
||||
'report.edit',
|
||||
'report.view',
|
||||
'nurse.report.view',
|
||||
]);
|
||||
$dej->givePermissionTo([
|
||||
'Создание отчета',
|
||||
]);
|
||||
$nurse->givePermissionTo([
|
||||
'Создание отчета',
|
||||
|
||||
// Старшая мед. сестра: журнал пациентов (создание и просмотр)
|
||||
$nurse->syncPermissions([
|
||||
'report.view',
|
||||
'nurse.report.view',
|
||||
'nurse.report.create',
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user