433c15a183
- Migration: add 'group' and 'description' columns to the permissions table. - PermissionCatalogSeeder (idempotent updateOrCreate): full catalogue across 11 sections — Proyectos, Fases y progreso, Capas y elementos, Inspecciones, Incidencias, Empresas, Usuarios, Roles, Informes, Archivos, General. Sets group + description on existing and creates the new ones; does NOT touch role assignments. Registered in DatabaseSeeder. - RoleView: group permission toggles by the 'group' column in a defined section order and show each permission's description. DB updated locally (migrate + seed run). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
93 lines
3.8 KiB
PHP
93 lines
3.8 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use Illuminate\Database\Seeder;
|
|
use Spatie\Permission\Models\Permission;
|
|
use Spatie\Permission\PermissionRegistrar;
|
|
|
|
class PermissionCatalogSeeder extends Seeder
|
|
{
|
|
/**
|
|
* Full permission catalogue, grouped by section.
|
|
* Idempotent: updates group/description on existing permissions and
|
|
* creates the missing ones. Does NOT change role assignments.
|
|
*/
|
|
public function run(): void
|
|
{
|
|
$guard = config('auth.defaults.guard', 'web');
|
|
|
|
$catalog = [
|
|
'Proyectos' => [
|
|
'view projects' => 'Ver listado y fichas de proyectos',
|
|
'create projects' => 'Crear proyectos',
|
|
'edit projects' => 'Editar datos del proyecto',
|
|
'delete projects' => 'Eliminar proyectos',
|
|
'export projects' => 'Exportar proyectos (Excel/PDF)',
|
|
],
|
|
'Fases y progreso' => [
|
|
'view phases' => 'Ver fases del proyecto',
|
|
'manage phases' => 'Crear, editar, ordenar y eliminar fases',
|
|
'update progress' => 'Actualizar el porcentaje de progreso',
|
|
],
|
|
'Capas y elementos' => [
|
|
'view layers' => 'Ver capas y elementos en el mapa',
|
|
'upload layers' => 'Subir/importar capas',
|
|
'edit layers' => 'Editar capas y elementos',
|
|
'delete layers' => 'Eliminar capas/elementos',
|
|
],
|
|
'Inspecciones' => [
|
|
'view inspections' => 'Ver inspecciones e historial',
|
|
'create inspections' => 'Registrar inspecciones',
|
|
'delete inspections' => 'Eliminar inspecciones',
|
|
'manage templates' => 'Gestionar plantillas de inspección',
|
|
],
|
|
'Incidencias' => [
|
|
'view issues' => 'Ver incidencias',
|
|
'create issues' => 'Crear incidencias',
|
|
'edit issues' => 'Editar, resolver y cerrar incidencias',
|
|
'delete issues' => 'Eliminar incidencias',
|
|
],
|
|
'Empresas' => [
|
|
'view companies' => 'Ver empresas',
|
|
'create companies' => 'Crear empresas',
|
|
'edit companies' => 'Editar empresas',
|
|
'delete companies' => 'Eliminar empresas',
|
|
],
|
|
'Usuarios' => [
|
|
'view users' => 'Ver usuarios',
|
|
'create users' => 'Crear usuarios',
|
|
'edit users' => 'Editar usuarios',
|
|
'delete users' => 'Eliminar usuarios',
|
|
'assign users' => 'Asignar usuarios/roles a proyectos',
|
|
],
|
|
'Roles' => [
|
|
'manage roles' => 'Crear/editar/borrar roles y asignar permisos',
|
|
],
|
|
'Informes' => [
|
|
'view reports' => 'Ver panel de informes',
|
|
'export reports' => 'Exportar informes',
|
|
],
|
|
'Archivos' => [
|
|
'view media' => 'Ver archivos/galería',
|
|
'upload media' => 'Subir archivos',
|
|
'delete media' => 'Eliminar archivos',
|
|
],
|
|
'General' => [
|
|
'manage all' => 'Súper-admin: acceso total al sistema',
|
|
],
|
|
];
|
|
|
|
foreach ($catalog as $group => $permissions) {
|
|
foreach ($permissions as $name => $description) {
|
|
Permission::updateOrCreate(
|
|
['name' => $name, 'guard_name' => $guard],
|
|
['group' => $group, 'description' => $description]
|
|
);
|
|
}
|
|
}
|
|
|
|
app(PermissionRegistrar::class)->forgetCachedPermissions();
|
|
}
|
|
}
|