frontend: add clearRoomSessionGuard to remove room session data on console route entry

This commit is contained in:
juancarmore 2026-02-12 08:08:48 +01:00
parent 9a2597a997
commit 9db0e8b29e
4 changed files with 27 additions and 1 deletions

View File

@ -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;
};

View File

@ -0,0 +1 @@
export * from './clear-room-session.guard';

View File

@ -1,2 +1,3 @@
export * from './components';
export * from './guards';
export * from './pages';

View File

@ -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: '',