31 lines
1.2 KiB
TypeScript
31 lines
1.2 KiB
TypeScript
import { RouteGuard } from './RouteGuard';
|
|
import { PathnameInterpreter } from './PathnameInterpreter';
|
|
import { RouteCatalog } from './RouteCatalog';
|
|
import { RouteAccessPolicy } from './RouteAccessPolicy';
|
|
import { ReturnToSanitizer } from './ReturnToSanitizer';
|
|
import { RoutePathBuilder } from './RoutePathBuilder';
|
|
import { AuthRedirectBuilder } from './AuthRedirectBuilder';
|
|
import { SessionGateway } from '../gateways/SessionGateway';
|
|
|
|
/**
|
|
* Factory function to create a RouteGuard instance with all dependencies
|
|
*
|
|
* Usage:
|
|
* ```typescript
|
|
* const guard = createRouteGuard();
|
|
* await guard.enforce({ pathname: '/dashboard' });
|
|
* ```
|
|
*
|
|
* @returns RouteGuard instance configured with all required dependencies
|
|
*/
|
|
export function createRouteGuard(): RouteGuard {
|
|
const catalog = new RouteCatalog();
|
|
const interpreter = new PathnameInterpreter();
|
|
const policy = new RouteAccessPolicy(catalog);
|
|
const sanitizer = new ReturnToSanitizer();
|
|
const pathBuilder = new RoutePathBuilder();
|
|
const redirectBuilder = new AuthRedirectBuilder(policy, sanitizer, pathBuilder, interpreter);
|
|
const gateway = new SessionGateway();
|
|
|
|
return new RouteGuard(interpreter, policy, gateway, redirectBuilder);
|
|
} |