SpecialX
|
6bed673d9f
|
feat(iam): graphql subgraph with dataloader and router auth guard
- GraphQLModule: Apollo Federation 2 subgraph at /graphql
- UserResolver/RoleResolver: @key with @ResolveReference using DataLoader (ADR-035)
- DataScopeResolver: ScopeToken for visible class/student IDs (ADR-041)
- RouterAuthGuard: validate Router-Authorization header (ADR-036)
- DataLoaderService: REQUEST-scoped userLoader + roleLoader
- IamRepository.batchFindRoles: batch query for DataLoader
- IamService.getVisibleClassIds/getVisibleStudentIds: dataScope calculation
- app.module.ts: register PermissionGuard + RouterAuthGuard as APP_GUARD
|
2026-07-14 23:48:16 +08:00 |
|