clean routes
This commit is contained in:
31
apps/website/lib/auth/createRouteGuard.ts
Normal file
31
apps/website/lib/auth/createRouteGuard.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
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);
|
||||
}
|
||||
Reference in New Issue
Block a user