diff --git a/.env.example b/.env.example index e893455065..3527c281bc 100644 --- a/.env.example +++ b/.env.example @@ -4,6 +4,10 @@ APP_TITLE=LibreChat +# Uncomment to add a custom footer. +# Uncomment and make empty "" to remove the footer. +# CUSTOM_FOOTER="My custom footer" + # The server will listen to localhost:3080 by default. You can change the target IP as you want. # If you want to make this server available externally, for example to share the server with others # or expose this from a Docker container, set host to 0.0.0.0 or your external IP interface. diff --git a/api/server/routes/config.js b/api/server/routes/config.js index b2d9b70988..afbfa21bdb 100644 --- a/api/server/routes/config.js +++ b/api/server/routes/config.js @@ -4,45 +4,36 @@ const { isEnabled } = require('../utils'); router.get('/', async function (req, res) { try { - const appTitle = process.env.APP_TITLE || 'LibreChat'; - const googleLoginEnabled = !!process.env.GOOGLE_CLIENT_ID && !!process.env.GOOGLE_CLIENT_SECRET; - const facebookLoginEnabled = - !!process.env.FACEBOOK_CLIENT_ID && !!process.env.FACEBOOK_CLIENT_SECRET; - const openidLoginEnabled = - !!process.env.OPENID_CLIENT_ID && - !!process.env.OPENID_CLIENT_SECRET && - !!process.env.OPENID_ISSUER && - !!process.env.OPENID_SESSION_SECRET; - const openidLabel = process.env.OPENID_BUTTON_LABEL || 'Login with OpenID'; - const openidImageUrl = process.env.OPENID_IMAGE_URL; - const githubLoginEnabled = !!process.env.GITHUB_CLIENT_ID && !!process.env.GITHUB_CLIENT_SECRET; - const discordLoginEnabled = - !!process.env.DISCORD_CLIENT_ID && !!process.env.DISCORD_CLIENT_SECRET; - const serverDomain = process.env.DOMAIN_SERVER || 'http://localhost:3080'; - const registrationEnabled = isEnabled(process.env.ALLOW_REGISTRATION); - const socialLoginEnabled = isEnabled(process.env.ALLOW_SOCIAL_LOGIN); - const checkBalance = isEnabled(process.env.CHECK_BALANCE); - const emailEnabled = - !!process.env.EMAIL_SERVICE && - !!process.env.EMAIL_USERNAME && - !!process.env.EMAIL_PASSWORD && - !!process.env.EMAIL_FROM; + const payload = { + appTitle: process.env.APP_TITLE || 'LibreChat', + googleLoginEnabled: !!process.env.GOOGLE_CLIENT_ID && !!process.env.GOOGLE_CLIENT_SECRET, + facebookLoginEnabled: + !!process.env.FACEBOOK_CLIENT_ID && !!process.env.FACEBOOK_CLIENT_SECRET, + openidLoginEnabled: + !!process.env.OPENID_CLIENT_ID && + !!process.env.OPENID_CLIENT_SECRET && + !!process.env.OPENID_ISSUER && + !!process.env.OPENID_SESSION_SECRET, + openidLabel: process.env.OPENID_BUTTON_LABEL || 'Login with OpenID', + openidImageUrl: process.env.OPENID_IMAGE_URL, + githubLoginEnabled: !!process.env.GITHUB_CLIENT_ID && !!process.env.GITHUB_CLIENT_SECRET, + discordLoginEnabled: !!process.env.DISCORD_CLIENT_ID && !!process.env.DISCORD_CLIENT_SECRET, + serverDomain: process.env.DOMAIN_SERVER || 'http://localhost:3080', + registrationEnabled: isEnabled(process.env.ALLOW_REGISTRATION), + socialLoginEnabled: isEnabled(process.env.ALLOW_SOCIAL_LOGIN), + emailEnabled: + !process.env.EMAIL_SERVICE && + !!process.env.EMAIL_USERNAME && + !!process.env.EMAIL_PASSWORD && + !!process.env.EMAIL_FROM, + checkBalance: isEnabled(process.env.CHECK_BALANCE), + }; - return res.status(200).send({ - appTitle, - googleLoginEnabled, - facebookLoginEnabled, - openidLoginEnabled, - openidLabel, - openidImageUrl, - githubLoginEnabled, - discordLoginEnabled, - serverDomain, - registrationEnabled, - socialLoginEnabled, - emailEnabled, - checkBalance, - }); + if (typeof process.env.CUSTOM_FOOTER === 'string') { + payload.customFooter = process.env.CUSTOM_FOOTER; + } + + return res.status(200).send(payload); } catch (err) { console.error(err); return res.status(500).send({ error: err.message }); diff --git a/client/src/components/Input/Footer.tsx b/client/src/components/Input/Footer.tsx index 0defb00886..a3d51dbf52 100644 --- a/client/src/components/Input/Footer.tsx +++ b/client/src/components/Input/Footer.tsx @@ -8,15 +8,21 @@ export default function Footer() { return (