From 9db0e8b29e0c841460b859e8b13c716c88f19bc6 Mon Sep 17 00:00:00 2001 From: juancarmore Date: Thu, 12 Feb 2026 08:08:48 +0100 Subject: [PATCH] frontend: add clearRoomSessionGuard to remove room session data on console route entry --- .../guards/clear-room-session.guard.ts | 23 +++++++++++++++++++ .../src/lib/domains/console/guards/index.ts | 1 + .../src/lib/domains/console/index.ts | 1 + .../domains/console/routes/console.routes.ts | 3 ++- 4 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 meet-ce/frontend/projects/shared-meet-components/src/lib/domains/console/guards/clear-room-session.guard.ts create mode 100644 meet-ce/frontend/projects/shared-meet-components/src/lib/domains/console/guards/index.ts diff --git a/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/console/guards/clear-room-session.guard.ts b/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/console/guards/clear-room-session.guard.ts new file mode 100644 index 00000000..5130519f --- /dev/null +++ b/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/console/guards/clear-room-session.guard.ts @@ -0,0 +1,23 @@ +import { inject } from '@angular/core'; +import { CanActivateFn } from '@angular/router'; +import { SessionStorageService } from '../../../shared/services/session-storage.service'; +import { RoomMemberContextService } from '../../room-members/services/room-member-context.service'; + +/** + * Guard that clears room-related session data when entering console routes. + * This ensures roomSecret, e2eeData and room member context are only removed when navigating to console, + * not when leaving a meeting to go to other non-console pages (like disconnected, room recordings, etc.) + */ +export const clearRoomSessionGuard: CanActivateFn = () => { + const sessionStorageService = inject(SessionStorageService); + const roomMemberContextService = inject(RoomMemberContextService); + + // Clear room member context + roomMemberContextService.clearContext(); + + // Clear room-related data from session storage + sessionStorageService.removeRoomSecret(); + sessionStorageService.removeE2EEData(); + + return true; +}; diff --git a/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/console/guards/index.ts b/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/console/guards/index.ts new file mode 100644 index 00000000..983d83c6 --- /dev/null +++ b/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/console/guards/index.ts @@ -0,0 +1 @@ +export * from './clear-room-session.guard'; diff --git a/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/console/index.ts b/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/console/index.ts index 9d412aac..9d6e78b3 100644 --- a/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/console/index.ts +++ b/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/console/index.ts @@ -1,2 +1,3 @@ export * from './components'; +export * from './guards'; export * from './pages'; diff --git a/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/console/routes/console.routes.ts b/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/console/routes/console.routes.ts index 873d2bc6..a91ba8cc 100644 --- a/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/console/routes/console.routes.ts +++ b/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/console/routes/console.routes.ts @@ -4,6 +4,7 @@ import { checkUserAuthenticatedGuard } from '../../auth/guards/auth.guard'; import { recordingsConsoleRoutes } from '../../recordings/routes/recordings.routes'; import { roomsConsoleRoutes } from '../../rooms/routes/rooms.routes'; import { usersConsoleRoutes } from '../../users/routes/users.routes'; +import { clearRoomSessionGuard } from '../guards/clear-room-session.guard'; /** * All console child routes configuration (includes console pages + rooms + recordings) @@ -65,7 +66,7 @@ export const consoleDomainRoutes: Route[] = [ { path: '', loadComponent: () => import('../pages/console/console.component').then((m) => m.ConsoleComponent), - canActivate: [checkUserAuthenticatedGuard], + canActivate: [checkUserAuthenticatedGuard, clearRoomSessionGuard], children: [ { path: '',