mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-09-22 06:00:56 +02:00

* Add files via upload * Create linode-setup.md * Create cloudflare-setup.md * Update cloudflare-setup.md * Delete 4-linode.png * Delete 3-linode.png * Add files via upload * Add files via upload * Update cloudflare-setup.md * Update linode-setup.md * Rename cloudflare-setup.md to cloudflare.md * Rename linode-setup.md to linode.md * Update mkdocs.yml * Update cloudflare.md * Update linode.md * Update README.md * Update README.md * Update linode.md sentence in Italian * v1 The frontend has been completed, along with the .env variables. However, there is an issue of infinite loading thereafter. * Fix email and remove deprecated GitHub passport * Update user_auth_system.md add How to Set Up a Github Authentication * Update .env.example Improved the comment above the GitHub client ID and secret. * Update user_auth_system.md * Update package.json * Remove unnecessary passport GitHub package * fixed conflicts fixed conflicts between Berry-13:main and danny-avila:main in api/server/index.js 45:54 * Delete e -i HEAD~2 * (WIP) Discord Login * Fix duplicate githubLoginEnabled * .env.example restore * Update user_auth_system.md Discord Login * Fix and new Feature 1. Added Discord login to .env.example. 2. Created Google, Github, and Discord icons in client\src\components\svg. 3. Added the social login option in the .env file; it fixes the ---or---. Check Discord for more information. * fix Login.tsx and Registration.tsx * Update user_auth_system.md * Update .env.example * Added OpenID Icon * quick discord icon fix * discord strategy fix * remove comment
146 lines
3.2 KiB
JavaScript
146 lines
3.2 KiB
JavaScript
const passport = require('passport');
|
|
const express = require('express');
|
|
const router = express.Router();
|
|
const config = require('../../../config/loader');
|
|
const domains = config.domains;
|
|
const isProduction = config.isProduction;
|
|
|
|
/**
|
|
* Google Routes
|
|
*/
|
|
router.get(
|
|
'/google',
|
|
passport.authenticate('google', {
|
|
scope: ['openid', 'profile', 'email'],
|
|
session: false
|
|
})
|
|
);
|
|
|
|
router.get(
|
|
'/google/callback',
|
|
passport.authenticate('google', {
|
|
failureRedirect: `${domains.client}/login`,
|
|
failureMessage: true,
|
|
session: false,
|
|
scope: ['openid', 'profile', 'email']
|
|
}),
|
|
(req, res) => {
|
|
const token = req.user.generateToken();
|
|
res.cookie('token', token, {
|
|
expires: new Date(Date.now() + eval(process.env.SESSION_EXPIRY)),
|
|
httpOnly: false,
|
|
secure: isProduction
|
|
});
|
|
res.redirect(domains.client);
|
|
}
|
|
);
|
|
|
|
router.get(
|
|
'/facebook',
|
|
passport.authenticate('facebook', {
|
|
scope: ['public_profile', 'email'],
|
|
session: false
|
|
})
|
|
);
|
|
|
|
router.get(
|
|
'/facebook/callback',
|
|
passport.authenticate('facebook', {
|
|
failureRedirect: `${domains.client}/login`,
|
|
failureMessage: true,
|
|
session: false,
|
|
scope: ['public_profile', 'email']
|
|
}),
|
|
(req, res) => {
|
|
const token = req.user.generateToken();
|
|
res.cookie('token', token, {
|
|
expires: new Date(Date.now() + eval(process.env.SESSION_EXPIRY)),
|
|
httpOnly: false,
|
|
secure: isProduction
|
|
});
|
|
res.redirect(domains.client);
|
|
}
|
|
);
|
|
|
|
router.get(
|
|
'/openid',
|
|
passport.authenticate('openid', {
|
|
session: false
|
|
})
|
|
);
|
|
|
|
router.get(
|
|
'/openid/callback',
|
|
passport.authenticate('openid', {
|
|
failureRedirect: `${domains.client}/login`,
|
|
failureMessage: true,
|
|
session: false
|
|
}),
|
|
(req, res) => {
|
|
const token = req.user.generateToken();
|
|
res.cookie('token', token, {
|
|
expires: new Date(Date.now() + eval(process.env.SESSION_EXPIRY)),
|
|
httpOnly: false,
|
|
secure: isProduction
|
|
});
|
|
res.redirect(domains.client);
|
|
}
|
|
);
|
|
|
|
|
|
router.get(
|
|
'/github',
|
|
passport.authenticate('github', {
|
|
scope: ['user:email', 'read:user'],
|
|
session: false
|
|
})
|
|
);
|
|
|
|
router.get(
|
|
'/github/callback',
|
|
passport.authenticate('github', {
|
|
failureRedirect: `${domains.client}/login`,
|
|
failureMessage: true,
|
|
session: false,
|
|
scope: ['user:email', 'read:user']
|
|
}),
|
|
(req, res) => {
|
|
const token = req.user.generateToken();
|
|
res.cookie('token', token, {
|
|
expires: new Date(Date.now() + eval(process.env.SESSION_EXPIRY)),
|
|
httpOnly: false,
|
|
secure: isProduction
|
|
});
|
|
res.redirect(domains.client);
|
|
}
|
|
);
|
|
|
|
|
|
router.get(
|
|
'/discord',
|
|
passport.authenticate('discord', {
|
|
scope: ['identify', 'email'],
|
|
session: false
|
|
})
|
|
);
|
|
|
|
router.get(
|
|
'/discord/callback',
|
|
passport.authenticate('discord', {
|
|
failureRedirect: `${domains.client}/login`,
|
|
failureMessage: true,
|
|
session: false,
|
|
scope: ['identify', 'email']
|
|
}),
|
|
(req, res) => {
|
|
const token = req.user.generateToken();
|
|
res.cookie('token', token, {
|
|
expires: new Date(Date.now() + eval(process.env.SESSION_EXPIRY)),
|
|
httpOnly: false,
|
|
secure: isProduction
|
|
});
|
|
res.redirect(domains.client);
|
|
}
|
|
);
|
|
|
|
module.exports = router;
|