From 09faa229205e0ea688c4342fc1ba911b1c6b1cf3 Mon Sep 17 00:00:00 2001 From: ncoronel Date: Wed, 30 Sep 2026 16:14:47 -0300 Subject: [PATCH] feat(event-admin): remove menu restrictions for non-admin users and add test for shared menus among event admins --- .../Auth/Services/AdminAppContextService.php | 6 ---- tests/Feature/Auth/AdminAppEventScopeTest.php | 33 +++++++++++++++++++ 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/app/Domains/Core/Auth/Services/AdminAppContextService.php b/app/Domains/Core/Auth/Services/AdminAppContextService.php index 1b9602bc..f0dddcdd 100644 --- a/app/Domains/Core/Auth/Services/AdminAppContextService.php +++ b/app/Domains/Core/Auth/Services/AdminAppContextService.php @@ -22,12 +22,6 @@ class AdminAppContextService $user->setRelation('tenant', $tenant); $user->load('event'); - if (! $user->isTenantAdministrator()) { - $allowed = ['main.adminapp', 'adminapp.inicio', 'adminapp.event', - 'adminapp.catalog', 'adminapp.ventas', 'adminapp.staff']; - $tenant->setRelation('menues', $tenant->menues->whereIn('code', $allowed)->values()); - } - return $user; } } diff --git a/tests/Feature/Auth/AdminAppEventScopeTest.php b/tests/Feature/Auth/AdminAppEventScopeTest.php index e3608a00..543713d5 100644 --- a/tests/Feature/Auth/AdminAppEventScopeTest.php +++ b/tests/Feature/Auth/AdminAppEventScopeTest.php @@ -136,6 +136,39 @@ class AdminAppEventScopeTest extends TestCase $this->assertSame(['adminapp'], $this->user->tokens()->sole()->abilities); } + public function test_event_admins_of_the_same_tenant_receive_the_same_assigned_menus(): void + { + DB::table('menues')->insert([ + 'code' => 'onticket.adminapp.event', + 'label' => 'Eventos', + 'route' => '/admin/event', + 'parent_menu_code' => 'main.adminapp', + ]); + DB::table('roles_menues')->insert([ + 'rol_codigo' => 'adminapp', + 'menu_codigo' => 'onticket.adminapp.event', + ]); + DB::table('tenants_menues')->insert([ + 'tenant_code' => 'onticket', + 'menu_code' => 'onticket.adminapp.event', + ]); + + $this->user->update(['admin_scope' => 'event', 'event_id' => 1]); + $token = $this->login()->assertOk()->json('token'); + $firstMenus = $this->withToken($token)->getJson('/api/v1/adminapp/me') + ->assertOk()->json('data.tenant.menues'); + + $this->user->update(['event_id' => 2]); + $secondMenus = $this->withToken($token)->getJson('/api/v1/adminapp/me') + ->assertOk()->json('data.tenant.menues'); + + $this->assertSame($firstMenus, $secondMenus); + $this->assertSame( + ['adminapp.ventas', 'onticket.adminapp.event'], + collect($firstMenus[0]['submenues'])->pluck('code')->sort()->values()->all(), + ); + } + public function test_invalid_scopes_never_issue_tokens_or_increment_password_failure_counts(): void { foreach ([