feat(authorization): establish many-to-many relationship between roles and menus, add migration and seeder updates

This commit is contained in:
2026-07-30 16:54:25 -03:00
parent d56d387933
commit a20b1713d3
8 changed files with 163 additions and 2 deletions

View File

@@ -111,6 +111,11 @@ class AuthorizationSeeder extends Seeder
'descripcion' => 'Administra la plataforma y todos sus tenants.',
'permisos' => [],
],
'adminapp' => [
'nombre' => 'Administrador de la aplicación',
'descripcion' => 'Accede a los menús administrativos de la aplicación.',
'permisos' => [],
],
'tenant_admin' => [
'nombre' => 'Administrador del tenant',
'descripcion' => 'Administra la operación de su propio tenant.',

View File

@@ -2,6 +2,7 @@
namespace Database\Seeders;
use App\Domains\Authorization\Models\Role;
use App\Domains\Menu\Models\Menu;
use App\Domains\Tenant\Models\Tenant;
use Illuminate\Database\Seeder;
@@ -133,6 +134,19 @@ class MenuSeeder extends Seeder
->whereIn('code', ['profile', 'purchases', 'tickets'])
->delete();
$allRoleMenuCodes = Menu::query()->pluck('code');
$userMenuCodes = Menu::query()
->where('code', 'not like', 'admin.%')
->pluck('code');
Role::query()
->whereIn('codigo', ['admin', 'adminapp'])
->each(fn (Role $role) => $role->menus()->sync($allRoleMenuCodes));
Role::query()
->where('codigo', 'user')
->each(fn (Role $role) => $role->menus()->sync($userMenuCodes));
$tenants = Tenant::all();
$allMenus = Menu::pluck('code')->toArray();