diff --git a/frontend/projects/shared-meet-components/src/lib/guards/index.ts b/frontend/projects/shared-meet-components/src/lib/guards/index.ts index 46ae9c1..2d5f3e5 100644 --- a/frontend/projects/shared-meet-components/src/lib/guards/index.ts +++ b/frontend/projects/shared-meet-components/src/lib/guards/index.ts @@ -4,3 +4,4 @@ export * from './validate-room-access.guard'; export * from './application-mode.guard'; export * from './participant-name.guard'; export * from './replace-moderator-secret.guard'; +export * from './room-creator.guard'; diff --git a/frontend/projects/shared-meet-components/src/lib/guards/room-creator.guard.ts b/frontend/projects/shared-meet-components/src/lib/guards/room-creator.guard.ts new file mode 100644 index 0000000..ff82777 --- /dev/null +++ b/frontend/projects/shared-meet-components/src/lib/guards/room-creator.guard.ts @@ -0,0 +1,19 @@ +import { inject } from '@angular/core'; +import { ActivatedRouteSnapshot, CanActivateFn, Router, RouterStateSnapshot } from '@angular/router'; +import { ContextService } from 'shared-meet-components'; + +export const checkRoomCreatorEnabledGuard: CanActivateFn = async ( + _route: ActivatedRouteSnapshot, + _state: RouterStateSnapshot +) => { + const contextService = inject(ContextService); + const router = inject(Router); + + const isRoomCreatorEnabled = await contextService.canUsersCreateRooms(); + if (!isRoomCreatorEnabled) { + router.navigate(['room-creator-disabled']); + return false; + } + + return true; +};