26 lines
808 B
TypeScript
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;
|
|
};
|