| 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, |
| appleLogin, |
| setupSaml, |
| } = require('~/strategies'); |
| const { getLogStores } = require('~/cache'); |
|
|
| |
| |
| |
| |
| |
| 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.'); |
| } |
|
|
| |
| |
| |
| |
| const configureSocialLogins = async (app) => { |
| logger.info('Configuring social logins...'); |
|
|
| if (process.env.GOOGLE_CLIENT_ID && process.env.GOOGLE_CLIENT_SECRET) { |
| passport.use(googleLogin()); |
| } |
| if (process.env.FACEBOOK_CLIENT_ID && process.env.FACEBOOK_CLIENT_SECRET) { |
| passport.use(facebookLogin()); |
| } |
| if (process.env.GITHUB_CLIENT_ID && process.env.GITHUB_CLIENT_SECRET) { |
| passport.use(githubLogin()); |
| } |
| if (process.env.DISCORD_CLIENT_ID && process.env.DISCORD_CLIENT_SECRET) { |
| passport.use(discordLogin()); |
| } |
| if (process.env.APPLE_CLIENT_ID && process.env.APPLE_PRIVATE_KEY_PATH) { |
| passport.use(appleLogin()); |
| } |
| if ( |
| process.env.OPENID_CLIENT_ID && |
| process.env.OPENID_CLIENT_SECRET && |
| process.env.OPENID_ISSUER && |
| process.env.OPENID_SCOPE && |
| process.env.OPENID_SESSION_SECRET |
| ) { |
| await configureOpenId(app); |
| } |
| if ( |
| process.env.SAML_ENTRY_POINT && |
| process.env.SAML_ISSUER && |
| process.env.SAML_CERT && |
| process.env.SAML_SESSION_SECRET |
| ) { |
| logger.info('Configuring SAML Connect...'); |
| const sessionOptions = { |
| secret: process.env.SAML_SESSION_SECRET, |
| resave: false, |
| saveUninitialized: false, |
| store: getLogStores(CacheKeys.SAML_SESSION), |
| }; |
| app.use(session(sessionOptions)); |
| app.use(passport.session()); |
| setupSaml(); |
|
|
| logger.info('SAML Connect configured.'); |
| } |
| }; |
|
|
| module.exports = configureSocialLogins; |
|
|