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