allow services for anonymous users & gpt4 fix
This commit is contained in:
@@ -18,6 +18,7 @@ export interface Config {
|
||||
// When provided, signed in users will be able to access OpenAI through the server
|
||||
// without needing their own API key.
|
||||
apiKey?: string;
|
||||
loginRequired?: boolean;
|
||||
};
|
||||
|
||||
elevenlabs?: {
|
||||
@@ -25,9 +26,10 @@ export interface Config {
|
||||
// When provided, signed in users will be able to access ElevenLabs through the server
|
||||
// without needing their own API key.
|
||||
apiKey?: string;
|
||||
loginRequired?: boolean;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
Optional configuration for enabling Transport Layer Security (TLS) in the server.
|
||||
Requires specifying the file paths for the key and cert files. Includes:
|
||||
@@ -102,9 +104,18 @@ if (!fs.existsSync('./data')) {
|
||||
fs.mkdirSync('./data');
|
||||
}
|
||||
|
||||
const filename = process.env.CHATWITHGPT_CONFIG_FILENAME
|
||||
? path.resolve(process.env.CHATWITHGPT_CONFIG_FILENAME)
|
||||
: path.resolve(__dirname, '../data/config.yaml');
|
||||
let filename = process.env.CHATWITHGPT_CONFIG_FILENAME as string;
|
||||
|
||||
// assume config.yaml if no filename is provided:
|
||||
if (!filename) {
|
||||
filename = path.resolve(__dirname, '../data/config.yaml')
|
||||
|
||||
// try config.yml if config.yaml doesn't exist:
|
||||
const fallbackFilename = path.resolve(__dirname, '../data/config.yml');
|
||||
if (!fs.existsSync(filename) && fs.existsSync(fallbackFilename)) {
|
||||
filename = fallbackFilename;
|
||||
}
|
||||
}
|
||||
|
||||
if (fs.existsSync(filename)) {
|
||||
config = {
|
||||
@@ -132,6 +143,7 @@ if (process.argv.includes('--self-signed')) {
|
||||
}
|
||||
|
||||
if (config.publicSiteURL) {
|
||||
// remove trailing slash:
|
||||
config.publicSiteURL = config.publicSiteURL.replace(/\/$/, '');
|
||||
}
|
||||
|
||||
|
@@ -23,6 +23,6 @@ export default class ElevenLabsTTSProxyRequestHandler extends RequestHandler {
|
||||
}
|
||||
|
||||
public isProtected() {
|
||||
return true;
|
||||
return config.services?.elevenlabs?.loginRequired ?? true;
|
||||
}
|
||||
}
|
@@ -2,6 +2,7 @@ import express from 'express';
|
||||
import RequestHandler from "../../base";
|
||||
import axios from 'axios';
|
||||
import { endpoint, apiKey } from './text-to-speech';
|
||||
import { config } from '../../../config';
|
||||
|
||||
export default class ElevenLabsVoicesProxyRequestHandler extends RequestHandler {
|
||||
async handler(req: express.Request, res: express.Response) {
|
||||
@@ -16,6 +17,6 @@ export default class ElevenLabsVoicesProxyRequestHandler extends RequestHandler
|
||||
}
|
||||
|
||||
public isProtected() {
|
||||
return true;
|
||||
return config.services?.elevenlabs?.loginRequired ?? true;
|
||||
}
|
||||
}
|
@@ -17,6 +17,6 @@ export default class OpenAIProxyRequestHandler extends RequestHandler {
|
||||
}
|
||||
|
||||
public isProtected() {
|
||||
return true;
|
||||
return config.services?.openai?.loginRequired ?? true;
|
||||
}
|
||||
}
|
@@ -7,7 +7,12 @@ export default class SessionRequestHandler extends RequestHandler {
|
||||
const request = req as any;
|
||||
|
||||
const availableServiceNames = Object.keys(config.services || {})
|
||||
.filter(key => (config.services as any)?.[key]?.apiKey);
|
||||
.filter(key => {
|
||||
const serviceConfig = (config.services as any)?.[key];
|
||||
const apiKey = serviceConfig?.apiKey;
|
||||
const loginRequired = serviceConfig?.loginRequired ?? true;
|
||||
return apiKey && (!loginRequired || request.isAuthenticated());
|
||||
});
|
||||
|
||||
if (request.oidc) {
|
||||
const user = request.oidc.user;
|
||||
@@ -40,6 +45,7 @@ export default class SessionRequestHandler extends RequestHandler {
|
||||
res.json({
|
||||
authProvider: this.context.authProvider,
|
||||
authenticated: false,
|
||||
services: availableServiceNames,
|
||||
});
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user