diff --git a/api/server/socialLogins.js b/api/server/socialLogins.js index 938d97e04..0a89313ba 100644 --- a/api/server/socialLogins.js +++ b/api/server/socialLogins.js @@ -1,19 +1,48 @@ const passport = require('passport'); const session = require('express-session'); +const { isEnabled } = require('@librechat/api'); +const { logger } = require('@librechat/data-schemas'); +const { CacheKeys } = require('librechat-data-provider'); const { + openIdJwtLogin, + facebookLogin, + discordLogin, setupOpenId, googleLogin, githubLogin, - discordLogin, - facebookLogin, appleLogin, setupSaml, - openIdJwtLogin, } = require('~/strategies'); -const { isEnabled } = require('~/server/utils'); -const { logger } = require('~/config'); const { getLogStores } = require('~/cache'); -const { CacheKeys } = require('librechat-data-provider'); + +/** + * Configures OpenID Connect for the application. + * @param {Express.Application} app - The Express application instance. + * @returns {Promise} + */ +async function configureOpenId(app) { + logger.info('Configuring OpenID Connect...'); + const sessionOptions = { + secret: process.env.OPENID_SESSION_SECRET, + resave: false, + saveUninitialized: false, + store: getLogStores(CacheKeys.OPENID_SESSION), + }; + app.use(session(sessionOptions)); + app.use(passport.session()); + + const config = await setupOpenId(); + if (!config) { + logger.error('OpenID Connect configuration failed - strategy not registered.'); + return; + } + + if (isEnabled(process.env.OPENID_REUSE_TOKENS)) { + logger.info('OpenID token reuse is enabled.'); + passport.use('openidJwt', openIdJwtLogin(config)); + } + logger.info('OpenID Connect configured successfully.'); +} /** * @@ -44,21 +73,7 @@ const configureSocialLogins = async (app) => { process.env.OPENID_SCOPE && process.env.OPENID_SESSION_SECRET ) { - logger.info('Configuring OpenID Connect...'); - const sessionOptions = { - secret: process.env.OPENID_SESSION_SECRET, - resave: false, - saveUninitialized: false, - store: getLogStores(CacheKeys.OPENID_SESSION), - }; - app.use(session(sessionOptions)); - app.use(passport.session()); - const config = await setupOpenId(); - if (isEnabled(process.env.OPENID_REUSE_TOKENS)) { - logger.info('OpenID token reuse is enabled.'); - passport.use('openidJwt', openIdJwtLogin(config)); - } - logger.info('OpenID Connect configured.'); + await configureOpenId(app); } if ( process.env.SAML_ENTRY_POINT &&