|
|
# STEP 02 – Replace local auth wiring with swissoid-back loaders
|
|
|
|
|
|
Integrated the shared `swissoidAuthLoadDict` and express middleware handles, rebuilding the DI container so the service mounts SwissOID routes through express-knifey. This removes the bespoke loaders and ensures session/cookie services are injected into the Apollo context.
|
|
|
|
|
|
## Loader rewrite (`biblio-stats-graphql/src/loaders/index.ts`)
|
|
|
```ts
|
|
|
import 'dotenv/config';
|
|
|
|
|
|
import statModel from './statsModel';
|
|
|
import statService from './statsService';
|
|
|
import userModel from './userModel';
|
|
|
import userService from './userService';
|
|
|
import localAppConfigMap from '../config/appConfig';
|
|
|
import { mysqlReqLoader as mysqlReq, mysqlMultipleReqLoader as mysqlMultipleReq } from 'mysql-oh-wait-utils';
|
|
|
import resolvers from '../graphql/resolvers';
|
|
|
import graphqlSchema from '../graphql/schema';
|
|
|
import coreToDomain from './coreToDomain';
|
|
|
import logger from './logger';
|
|
|
|
|
|
import DiContainer, { addMergeableConfigMap, AppConfigNamespace, LoadDict, mergeLDs } from 'di-why';
|
|
|
import { apolloContextLDEGen, apolloStandaloneServerModularLDGen, createGraphqlMiddlewareConfig } from 'graphql-knifey';
|
|
|
import { swissoidAuthLoadDict, SWISSOID_MIDDLEWARE } from 'swissoid-back';
|
|
|
|
|
|
const appConfigMapNamespace: AppConfigNamespace = {
|
|
|
namespace: 'biblioStatsAppConfigMap',
|
|
|
priority: 61,
|
|
|
};
|
|
|
|
|
|
const middlewareConfig = createGraphqlMiddlewareConfig({
|
|
|
global: [SWISSOID_MIDDLEWARE.oidcStandardRoutes],
|
|
|
});
|
|
|
|
|
|
const loadDict: LoadDict = mergeLDs(
|
|
|
swissoidAuthLoadDict,
|
|
|
apolloStandaloneServerModularLDGen({
|
|
|
resolvers,
|
|
|
typeDefs: graphqlSchema,
|
|
|
middlewareConfig,
|
|
|
}),
|
|
|
{
|
|
|
mysqlReq,
|
|
|
mysqlMultipleReq,
|
|
|
logger,
|
|
|
statModel,
|
|
|
statService,
|
|
|
coreToDomain,
|
|
|
userModel,
|
|
|
userService,
|
|
|
apolloContext: apolloContextLDEGen({
|
|
|
statService: 'statService',
|
|
|
userService: 'userService',
|
|
|
coreToDomain: 'coreToDomain',
|
|
|
sessionService: 'sessionService',
|
|
|
cookieManager: 'cookieManager',
|
|
|
appConfig: 'appConfig',
|
|
|
logger: 'logger',
|
|
|
}),
|
|
|
...addMergeableConfigMap(localAppConfigMap, appConfigMapNamespace),
|
|
|
}
|
|
|
);
|
|
|
|
|
|
const diContainer = new DiContainer({ load: loadDict });
|
|
|
|
|
|
export default diContainer;
|
|
|
```
|
|
|
|
|
|
## Express launcher (`biblio-stats-graphql/src/index.ts`)
|
|
|
```ts
|
|
|
await di.load('expressLauncher');
|
|
|
```
|
|
|
|
|
|
Deleted the redundant SwissOID stubs (`src/loaders/tokenAuthService.ts`, `src/loaders/swissoidAuthMiddleware.ts`, `src/loaders/swissoidOidcRoutes.ts`, `src/loaders/apolloContextWithSwissoidAuth.ts`, `src/middleware/swissoidAuth.ts`, `src/setupAuth.ts`) since the shared package now owns the flow.
|