| const session = require('express-session'); | |
| const RedisStore = require('connect-redis').default; | |
| const passport = require('passport'); | |
| const { | |
| googleLogin, | |
| githubLogin, | |
| discordLogin, | |
| facebookLogin, | |
| setupOpenId, | |
| } = require('../strategies'); | |
| const client = require('../cache/redis'); | |
| const configureSocialLogins = (app) => { | |
| 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.OPENID_CLIENT_ID && | |
| process.env.OPENID_CLIENT_SECRET && | |
| process.env.OPENID_ISSUER && | |
| process.env.OPENID_SCOPE && | |
| process.env.OPENID_SESSION_SECRET | |
| ) { | |
| const sessionOptions = { | |
| secret: process.env.OPENID_SESSION_SECRET, | |
| resave: false, | |
| saveUninitialized: false, | |
| }; | |
| if (process.env.USE_REDIS) { | |
| sessionOptions.store = new RedisStore({ client, prefix: 'librechat' }); | |
| } | |
| app.use(session(sessionOptions)); | |
| app.use(passport.session()); | |
| setupOpenId(); | |
| } | |
| }; | |
| module.exports = configureSocialLogins; | |