From e56b416c7a6d612edf4d07f44aeb1331ef65d2ff Mon Sep 17 00:00:00 2001 From: Spoffy <4805393+Spoffy@users.noreply.github.com> Date: Thu, 23 May 2024 23:07:46 +0100 Subject: [PATCH] Moves core create object and core getLoginSystem to server/lib (#994) This enables code in ext/ to be able to access it (e.g for proxying / interception). Additionally adds getCreate() to enable future refactoring of `const create` away from being a global singleton constant. --- app/server/lib/coreCreator.ts | 22 ++++++++++++++++++++++ app/server/lib/coreLogins.ts | 12 ++++++++++++ stubs/app/server/lib/create.ts | 33 ++++++++++++--------------------- stubs/app/server/lib/logins.ts | 12 +++--------- 4 files changed, 49 insertions(+), 30 deletions(-) create mode 100644 app/server/lib/coreCreator.ts create mode 100644 app/server/lib/coreLogins.ts diff --git a/app/server/lib/coreCreator.ts b/app/server/lib/coreCreator.ts new file mode 100644 index 00000000..f4536c16 --- /dev/null +++ b/app/server/lib/coreCreator.ts @@ -0,0 +1,22 @@ +import { checkMinIOBucket, checkMinIOExternalStorage, + configureMinIOExternalStorage } from 'app/server/lib/configureMinIOExternalStorage'; +import { makeSimpleCreator } from 'app/server/lib/ICreate'; +import { Telemetry } from 'app/server/lib/Telemetry'; + +export const makeCoreCreator = () => makeSimpleCreator({ + deploymentType: 'core', + // This can and should be overridden by GRIST_SESSION_SECRET + // (or generated randomly per install, like grist-omnibus does). + sessionSecret: 'Phoo2ag1jaiz6Moo2Iese2xoaphahbai3oNg7diemohlah0ohtae9iengafieS2Hae7quungoCi9iaPh', + storage: [ + { + name: 'minio', + check: () => checkMinIOExternalStorage() !== undefined, + checkBackend: () => checkMinIOBucket(), + create: configureMinIOExternalStorage, + }, + ], + telemetry: { + create: (dbManager, gristServer) => new Telemetry(dbManager, gristServer), + } +}); diff --git a/app/server/lib/coreLogins.ts b/app/server/lib/coreLogins.ts new file mode 100644 index 00000000..a9215ca3 --- /dev/null +++ b/app/server/lib/coreLogins.ts @@ -0,0 +1,12 @@ +import { getForwardAuthLoginSystem } from 'app/server/lib/ForwardAuthLogin'; +import { GristLoginSystem } from 'app/server/lib/GristServer'; +import { getMinimalLoginSystem } from 'app/server/lib/MinimalLogin'; +import { getOIDCLoginSystem } from 'app/server/lib/OIDCConfig'; +import { getSamlLoginSystem } from 'app/server/lib/SamlConfig'; + +export async function getCoreLoginSystem(): Promise { + return await getSamlLoginSystem() || + await getOIDCLoginSystem() || + await getForwardAuthLoginSystem() || + await getMinimalLoginSystem(); +} diff --git a/stubs/app/server/lib/create.ts b/stubs/app/server/lib/create.ts index 370d0c5a..b295e98e 100644 --- a/stubs/app/server/lib/create.ts +++ b/stubs/app/server/lib/create.ts @@ -1,22 +1,13 @@ -import { checkMinIOBucket, checkMinIOExternalStorage, - configureMinIOExternalStorage } from 'app/server/lib/configureMinIOExternalStorage'; -import { makeSimpleCreator } from 'app/server/lib/ICreate'; -import { Telemetry } from 'app/server/lib/Telemetry'; +import {ICreate} from "app/server/lib/ICreate"; +import {makeCoreCreator} from "app/server/lib/coreCreator"; -export const create = makeSimpleCreator({ - deploymentType: 'core', - // This can and should be overridden by GRIST_SESSION_SECRET - // (or generated randomly per install, like grist-omnibus does). - sessionSecret: 'Phoo2ag1jaiz6Moo2Iese2xoaphahbai3oNg7diemohlah0ohtae9iengafieS2Hae7quungoCi9iaPh', - storage: [ - { - name: 'minio', - check: () => checkMinIOExternalStorage() !== undefined, - checkBackend: () => checkMinIOBucket(), - create: configureMinIOExternalStorage, - }, - ], - telemetry: { - create: (dbManager, gristServer) => new Telemetry(dbManager, gristServer), - } -}); +export const create: ICreate = makeCoreCreator(); + +/** + * Fetch the ICreate object for grist-core. + * Placeholder to enable eventual refactoring away from a global singleton constant. + * Needs to exist in all repositories before core can be switched! + */ +export function getCreator(): ICreate { + return create; +} diff --git a/stubs/app/server/lib/logins.ts b/stubs/app/server/lib/logins.ts index ae85ccaf..d038ebcb 100644 --- a/stubs/app/server/lib/logins.ts +++ b/stubs/app/server/lib/logins.ts @@ -1,12 +1,6 @@ -import { getForwardAuthLoginSystem } from 'app/server/lib/ForwardAuthLogin'; -import { GristLoginSystem } from 'app/server/lib/GristServer'; -import { getMinimalLoginSystem } from 'app/server/lib/MinimalLogin'; -import { getOIDCLoginSystem } from 'app/server/lib/OIDCConfig'; -import { getSamlLoginSystem } from 'app/server/lib/SamlConfig'; +import { getCoreLoginSystem } from "app/server/lib/coreLogins"; +import { GristLoginSystem } from "app/server/lib/GristServer"; export async function getLoginSystem(): Promise { - return await getSamlLoginSystem() || - await getOIDCLoginSystem() || - await getForwardAuthLoginSystem() || - await getMinimalLoginSystem(); + return getCoreLoginSystem(); }