26 lines
808 B
TypeScript

import { inject } from '@angular/core';
import { CanActivateFn, NavigationEnd, Router } from '@angular/router';
import { NavigationService } from '@lib/services';
import { filter, take } from 'rxjs';
/**
* Guard that intercepts navigation to remove the 'secret' query parameter from the URL
* that determine the role of a participant when joining a room or accessing its recordings,
* in order to enhance security.
*/
export const removeRoomSecretGuard: CanActivateFn = (route, _state) => {
const router = inject(Router);
const navigationService = inject(NavigationService);
router.events
.pipe(
filter((event) => event instanceof NavigationEnd),
take(1)
)
.subscribe(async () => {
await navigationService.removeQueryParamFromUrl(route.queryParams, 'secret');
});
return true;
};