javascript / intermediate
Snippet
Functional Route Guarding with Authentication State Verification
Functional route guards in Angular utilize `inject()` inside closure functions to enforce client-side access control, redirecting unauthorized navigation requests to designated safe routes.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import { inject } from '@angular/core';import { CanActivateFn, Router } from '@angular/router';import { AuthService } from './auth.service';export const requireRoleGuard = (requiredRole: string): CanActivateFn => {return (route, state) => {const authService = inject(AuthService);const router = inject(Router);if (authService.hasRole(requiredRole)) {return true;}return router.createUrlTree(['/unauthorized'], { queryParams: { returnUrl: state.url } });};};
angular
Breakdown
1
export const requireRoleGuard = (requiredRole: string): CanActivateFn => {
Creates a parameter-driven factory function returning a functional CanActivateFn guard.
2
const authService = inject(AuthService);
Retrieves dependency injection tokens directly inside the functional guard execution context.
3
return router.createUrlTree(['/unauthorized'], { queryParams: { returnUrl: state.url } });
Redirects unauthorized users to a safe route by returning a redirecting UrlTree object.