feat(event-admin): remove menu restrictions for non-admin users and add test for shared menus among event admins

This commit is contained in:
2026-09-30 16:14:47 -03:00
parent bebf6a7ed5
commit 09faa22920
2 changed files with 33 additions and 6 deletions

View File

@@ -22,12 +22,6 @@ class AdminAppContextService
$user->setRelation('tenant', $tenant); $user->setRelation('tenant', $tenant);
$user->load('event'); $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; return $user;
} }
} }

View File

@@ -136,6 +136,39 @@ class AdminAppEventScopeTest extends TestCase
$this->assertSame(['adminapp'], $this->user->tokens()->sole()->abilities); $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 public function test_invalid_scopes_never_issue_tokens_or_increment_password_failure_counts(): void
{ {
foreach ([ foreach ([