You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
2.6 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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.