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.
2.6 KiB
2.6 KiB
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)
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)
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.