mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-01-05 01:58:50 +01:00
ci(backend-review.yml): add linter step to the backend review workflow (#625)
* ci(backend-review.yml): add linter step to the backend review workflow * chore(backend-review.yml): remove prettier from lint-action configuration * chore: apply new linting workflow * chore(lint-staged.config.js): reorder lint-staged tasks for JavaScript and TypeScript files * chore(eslint): update ignorePatterns in .eslintrc.js chore(lint-action): remove prettier option in backend-review.yml chore(package.json): add lint and lint:fix scripts * chore(lint-staged.config.js): remove prettier --write command for js, jsx, ts, tsx files * chore(titleConvo.js): remove unnecessary console.log statement chore(titleConvo.js): add missing comma in options object * chore: apply linting to all files * chore(lint-staged.config.js): update lint-staged configuration to include prettier formatting
This commit is contained in:
parent
637bb6bc11
commit
e5336039fc
231 changed files with 1688 additions and 1526 deletions
|
|
@ -1,7 +1,7 @@
|
|||
const {
|
||||
registerUser,
|
||||
requestPasswordReset,
|
||||
resetPassword
|
||||
resetPassword,
|
||||
} = require('../services/auth.service');
|
||||
|
||||
const isProduction = process.env.NODE_ENV === 'production';
|
||||
|
|
@ -16,7 +16,7 @@ const registrationController = async (req, res) => {
|
|||
res.cookie('token', token, {
|
||||
expires: new Date(Date.now() + eval(process.env.SESSION_EXPIRY)),
|
||||
httpOnly: false,
|
||||
secure: isProduction
|
||||
secure: isProduction,
|
||||
});
|
||||
res.status(status).send({ user });
|
||||
} else {
|
||||
|
|
@ -52,7 +52,7 @@ const resetPasswordController = async (req, res) => {
|
|||
const resetPasswordService = await resetPassword(
|
||||
req.body.userId,
|
||||
req.body.token,
|
||||
req.body.password
|
||||
req.body.password,
|
||||
);
|
||||
if (resetPasswordService instanceof Error) {
|
||||
return res.status(400).json(resetPasswordService);
|
||||
|
|
@ -120,5 +120,5 @@ module.exports = {
|
|||
// refreshController,
|
||||
registrationController,
|
||||
resetPasswordRequestController,
|
||||
resetPasswordController
|
||||
resetPasswordController,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ const getAvailablePluginsController = async (req, res) => {
|
|||
});
|
||||
res.status(200).json(authenticatedPlugins);
|
||||
}
|
||||
}
|
||||
},
|
||||
);
|
||||
} catch (error) {
|
||||
res.status(500).json({ message: error.message });
|
||||
|
|
@ -53,5 +53,5 @@ const getAvailablePluginsController = async (req, res) => {
|
|||
};
|
||||
|
||||
module.exports = {
|
||||
getAvailablePluginsController
|
||||
getAvailablePluginsController,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -51,5 +51,5 @@ const updateUserPluginsController = async (req, res) => {
|
|||
|
||||
module.exports = {
|
||||
getUserController,
|
||||
updateUserPluginsController
|
||||
updateUserPluginsController,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ const User = require('../../../models/User');
|
|||
const loginController = async (req, res) => {
|
||||
try {
|
||||
const user = await User.findById(
|
||||
req.user._id
|
||||
req.user._id,
|
||||
);
|
||||
|
||||
// If user doesn't exist, return error
|
||||
|
|
@ -13,7 +13,7 @@ const loginController = async (req, res) => {
|
|||
|
||||
const token = req.user.generateToken();
|
||||
const expires = eval(process.env.SESSION_EXPIRY);
|
||||
|
||||
|
||||
// Add token to cookie
|
||||
res.cookie(
|
||||
'token',
|
||||
|
|
@ -21,8 +21,8 @@ const loginController = async (req, res) => {
|
|||
{
|
||||
expires: new Date(Date.now() + expires),
|
||||
httpOnly: false,
|
||||
secure: process.env.NODE_ENV === 'production'
|
||||
}
|
||||
secure: process.env.NODE_ENV === 'production',
|
||||
},
|
||||
);
|
||||
|
||||
return res.status(200).send({ token, user });
|
||||
|
|
@ -35,5 +35,5 @@ const loginController = async (req, res) => {
|
|||
};
|
||||
|
||||
module.exports = {
|
||||
loginController
|
||||
loginController,
|
||||
};
|
||||
|
|
@ -17,5 +17,5 @@ const logoutController = async (req, res) => {
|
|||
};
|
||||
|
||||
module.exports = {
|
||||
logoutController
|
||||
logoutController,
|
||||
};
|
||||
|
|
@ -58,7 +58,7 @@ config.validate(); // Validate the config
|
|||
app.use(session({
|
||||
secret: process.env.OPENID_SESSION_SECRET,
|
||||
resave: false,
|
||||
saveUninitialized: false
|
||||
saveUninitialized: false,
|
||||
}));
|
||||
app.use(passport.session());
|
||||
require('../strategies/openidStrategy');
|
||||
|
|
@ -86,7 +86,7 @@ config.validate(); // Validate the config
|
|||
app.listen(port, host, () => {
|
||||
if (host == '0.0.0.0')
|
||||
console.log(
|
||||
`Server listening on all interface at port ${port}. Use http://localhost:${port} to access it`
|
||||
`Server listening on all interface at port ${port}. Use http://localhost:${port} to access it`,
|
||||
);
|
||||
else
|
||||
console.log(`Server listening at http://${host == '0.0.0.0' ? 'localhost' : host}:${port}`);
|
||||
|
|
|
|||
|
|
@ -5,19 +5,19 @@ const addToCache = async ({ endpoint, endpointOption, userMessage, responseMessa
|
|||
try {
|
||||
const conversationsCache = new Keyv({
|
||||
store: new KeyvFile({ filename: './data/cache.json' }),
|
||||
namespace: 'chatgpt' // should be 'bing' for bing/sydney
|
||||
namespace: 'chatgpt', // should be 'bing' for bing/sydney
|
||||
});
|
||||
|
||||
const {
|
||||
conversationId,
|
||||
messageId: userMessageId,
|
||||
parentMessageId: userParentMessageId,
|
||||
text: userText
|
||||
text: userText,
|
||||
} = userMessage;
|
||||
const {
|
||||
messageId: responseMessageId,
|
||||
parentMessageId: responseParentMessageId,
|
||||
text: responseText
|
||||
text: responseText,
|
||||
} = responseMessage;
|
||||
|
||||
let conversation = await conversationsCache.get(conversationId);
|
||||
|
|
@ -26,7 +26,7 @@ const addToCache = async ({ endpoint, endpointOption, userMessage, responseMessa
|
|||
if (!conversation) {
|
||||
conversation = {
|
||||
messages: [],
|
||||
createdAt: Date.now()
|
||||
createdAt: Date.now(),
|
||||
};
|
||||
// isNewConversation = true;
|
||||
}
|
||||
|
|
@ -43,14 +43,14 @@ const addToCache = async ({ endpoint, endpointOption, userMessage, responseMessa
|
|||
id: userMessageId,
|
||||
parentMessageId: userParentMessageId,
|
||||
role: 'User',
|
||||
message: userText
|
||||
message: userText,
|
||||
};
|
||||
|
||||
let _responseMessage = {
|
||||
id: responseMessageId,
|
||||
parentMessageId: responseParentMessageId,
|
||||
role: roles(endpointOption),
|
||||
message: responseText
|
||||
message: responseText,
|
||||
};
|
||||
|
||||
conversation.messages.push(_userMessage, _responseMessage);
|
||||
|
|
|
|||
|
|
@ -27,8 +27,8 @@ router.post('/', requireJwtAuth, async (req, res) => {
|
|||
temperature: req.body?.temperature ?? 0.7,
|
||||
maxOutputTokens: req.body?.maxOutputTokens ?? 1024,
|
||||
topP: req.body?.topP ?? 0.7,
|
||||
topK: req.body?.topK ?? 40
|
||||
}
|
||||
topK: req.body?.topK ?? 40,
|
||||
},
|
||||
};
|
||||
|
||||
const conversationId = oldConversationId || crypto.randomUUID();
|
||||
|
|
@ -39,7 +39,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
|
|||
conversationId,
|
||||
parentMessageId,
|
||||
req,
|
||||
res
|
||||
res,
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -49,7 +49,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
|
|||
'Content-Type': 'text/event-stream',
|
||||
'Cache-Control': 'no-cache, no-transform',
|
||||
'Access-Control-Allow-Origin': '*',
|
||||
'X-Accel-Buffering': 'no'
|
||||
'X-Accel-Buffering': 'no',
|
||||
});
|
||||
|
||||
let userMessage;
|
||||
|
|
@ -81,10 +81,10 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
|
|||
text: partialText,
|
||||
unfinished: true,
|
||||
cancelled: false,
|
||||
error: false
|
||||
error: false,
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
const abortController = new AbortController();
|
||||
|
|
@ -110,7 +110,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
|
|||
final: true,
|
||||
conversation: await getConvo(req.user.id, conversationId),
|
||||
requestMessage: userMessage,
|
||||
responseMessage: responseMessage
|
||||
responseMessage: responseMessage,
|
||||
};
|
||||
};
|
||||
|
||||
|
|
@ -132,10 +132,10 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
|
|||
onProgress: progressCallback.call(null, {
|
||||
res,
|
||||
text,
|
||||
parentMessageId: overrideParentMessageId || userMessageId
|
||||
parentMessageId: overrideParentMessageId || userMessageId,
|
||||
}),
|
||||
onStart,
|
||||
abortController
|
||||
abortController,
|
||||
});
|
||||
|
||||
if (overrideParentMessageId) {
|
||||
|
|
@ -146,7 +146,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
|
|||
...endpointOption,
|
||||
...endpointOption.modelOptions,
|
||||
conversationId,
|
||||
endpoint: 'anthropic'
|
||||
endpoint: 'anthropic',
|
||||
});
|
||||
|
||||
await saveMessage(response);
|
||||
|
|
@ -155,7 +155,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
|
|||
final: true,
|
||||
conversation: await getConvo(req.user.id, conversationId),
|
||||
requestMessage: userMessage,
|
||||
responseMessage: response
|
||||
responseMessage: response,
|
||||
});
|
||||
res.end();
|
||||
|
||||
|
|
@ -163,7 +163,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
|
|||
const title = await titleConvo({ text, response });
|
||||
await saveConvo(req.user.id, {
|
||||
conversationId,
|
||||
title
|
||||
title,
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
|
|
@ -176,7 +176,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
|
|||
unfinished: false,
|
||||
cancelled: false,
|
||||
error: true,
|
||||
text: error.message
|
||||
text: error.message,
|
||||
};
|
||||
await saveMessage(errorMessage);
|
||||
handleError(res, errorMessage);
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
|
|||
messageId,
|
||||
overrideParentMessageId = null,
|
||||
parentMessageId,
|
||||
conversationId: oldConversationId
|
||||
conversationId: oldConversationId,
|
||||
} = req.body;
|
||||
if (text.length === 0) return handleError(res, { text: 'Prompt empty or too short' });
|
||||
if (endpoint !== 'bingAI') return handleError(res, { text: 'Illegal request' });
|
||||
|
|
@ -29,7 +29,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
|
|||
text,
|
||||
parentMessageId: userParentMessageId,
|
||||
conversationId,
|
||||
isCreatedByUser: true
|
||||
isCreatedByUser: true,
|
||||
};
|
||||
|
||||
// build endpoint option
|
||||
|
|
@ -41,7 +41,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
|
|||
systemMessage: req.body?.systemMessage ?? null,
|
||||
context: req.body?.context ?? null,
|
||||
toneStyle: req.body?.toneStyle ?? 'creative',
|
||||
token: req.body?.token ?? null
|
||||
token: req.body?.token ?? null,
|
||||
};
|
||||
else
|
||||
endpointOption = {
|
||||
|
|
@ -52,13 +52,13 @@ router.post('/', requireJwtAuth, async (req, res) => {
|
|||
clientId: req.body?.clientId ?? null,
|
||||
invocationId: req.body?.invocationId ?? null,
|
||||
toneStyle: req.body?.toneStyle ?? 'creative',
|
||||
token: req.body?.token ?? null
|
||||
token: req.body?.token ?? null,
|
||||
};
|
||||
|
||||
console.log('ask log', {
|
||||
userMessage,
|
||||
endpointOption,
|
||||
conversationId
|
||||
conversationId,
|
||||
});
|
||||
|
||||
if (!overrideParentMessageId) {
|
||||
|
|
@ -67,7 +67,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
|
|||
...userMessage,
|
||||
...endpointOption,
|
||||
conversationId,
|
||||
endpoint
|
||||
endpoint,
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -80,7 +80,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
|
|||
preSendRequest: true,
|
||||
overrideParentMessageId,
|
||||
req,
|
||||
res
|
||||
res,
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -92,7 +92,7 @@ const ask = async ({
|
|||
preSendRequest = true,
|
||||
overrideParentMessageId = null,
|
||||
req,
|
||||
res
|
||||
res,
|
||||
}) => {
|
||||
let { text, parentMessageId: userParentMessageId, messageId: userMessageId } = userMessage;
|
||||
|
||||
|
|
@ -103,7 +103,7 @@ const ask = async ({
|
|||
'Content-Type': 'text/event-stream',
|
||||
'Cache-Control': 'no-cache, no-transform',
|
||||
'Access-Control-Allow-Origin': '*',
|
||||
'X-Accel-Buffering': 'no'
|
||||
'X-Accel-Buffering': 'no',
|
||||
});
|
||||
|
||||
if (preSendRequest) sendMessage(res, { message: userMessage, created: true });
|
||||
|
|
@ -123,10 +123,10 @@ const ask = async ({
|
|||
text: text,
|
||||
unfinished: true,
|
||||
cancelled: false,
|
||||
error: false
|
||||
error: false,
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
const abortController = new AbortController();
|
||||
let bingConversationId = null;
|
||||
|
|
@ -142,9 +142,9 @@ const ask = async ({
|
|||
onProgress: progressCallback.call(null, {
|
||||
res,
|
||||
text,
|
||||
parentMessageId: overrideParentMessageId || userMessageId
|
||||
parentMessageId: overrideParentMessageId || userMessageId,
|
||||
}),
|
||||
abortController
|
||||
abortController,
|
||||
});
|
||||
|
||||
console.log('BING RESPONSE', response);
|
||||
|
|
@ -173,7 +173,7 @@ const ask = async ({
|
|||
response.details.suggestedResponses.map((s) => s.text),
|
||||
unfinished: false,
|
||||
cancelled: false,
|
||||
error: false
|
||||
error: false,
|
||||
};
|
||||
|
||||
await saveMessage(responseMessage);
|
||||
|
|
@ -199,7 +199,7 @@ const ask = async ({
|
|||
await saveMessage({
|
||||
...userMessage,
|
||||
messageId: userMessageId,
|
||||
newMessageId: newUserMessageId
|
||||
newMessageId: newUserMessageId,
|
||||
});
|
||||
userMessageId = newUserMessageId;
|
||||
|
||||
|
|
@ -208,19 +208,19 @@ const ask = async ({
|
|||
final: true,
|
||||
conversation: await getConvo(req.user.id, conversationId),
|
||||
requestMessage: userMessage,
|
||||
responseMessage: responseMessage
|
||||
responseMessage: responseMessage,
|
||||
});
|
||||
res.end();
|
||||
|
||||
if (userParentMessageId == '00000000-0000-0000-0000-000000000000') {
|
||||
const title = await titleConvoBing({
|
||||
text,
|
||||
response: responseMessage
|
||||
response: responseMessage,
|
||||
});
|
||||
|
||||
await saveConvo(req.user.id, {
|
||||
conversationId: conversationId,
|
||||
title
|
||||
title,
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
|
|
@ -233,7 +233,7 @@ const ask = async ({
|
|||
unfinished: false,
|
||||
cancelled: false,
|
||||
error: true,
|
||||
text: error.message
|
||||
text: error.message,
|
||||
};
|
||||
await saveMessage(errorMessage);
|
||||
handleError(res, errorMessage);
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
|
|||
text,
|
||||
overrideParentMessageId = null,
|
||||
parentMessageId,
|
||||
conversationId: oldConversationId
|
||||
conversationId: oldConversationId,
|
||||
} = req.body;
|
||||
if (text.length === 0) return handleError(res, { text: 'Prompt empty or too short' });
|
||||
if (endpoint !== 'chatGPTBrowser') return handleError(res, { text: 'Illegal request' });
|
||||
|
|
@ -29,13 +29,13 @@ router.post('/', requireJwtAuth, async (req, res) => {
|
|||
text,
|
||||
parentMessageId: userParentMessageId,
|
||||
conversationId,
|
||||
isCreatedByUser: true
|
||||
isCreatedByUser: true,
|
||||
};
|
||||
|
||||
// build endpoint option
|
||||
const endpointOption = {
|
||||
model: req.body?.model ?? 'text-davinci-002-render-sha',
|
||||
token: req.body?.token ?? null
|
||||
token: req.body?.token ?? null,
|
||||
};
|
||||
|
||||
// const availableModels = getChatGPTBrowserModels();
|
||||
|
|
@ -45,7 +45,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
|
|||
console.log('ask log', {
|
||||
userMessage,
|
||||
endpointOption,
|
||||
conversationId
|
||||
conversationId,
|
||||
});
|
||||
|
||||
if (!overrideParentMessageId) {
|
||||
|
|
@ -54,7 +54,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
|
|||
...userMessage,
|
||||
...endpointOption,
|
||||
conversationId,
|
||||
endpoint
|
||||
endpoint,
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -67,7 +67,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
|
|||
preSendRequest: true,
|
||||
overrideParentMessageId,
|
||||
req,
|
||||
res
|
||||
res,
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -78,7 +78,7 @@ const ask = async ({
|
|||
conversationId,
|
||||
overrideParentMessageId = null,
|
||||
req,
|
||||
res
|
||||
res,
|
||||
}) => {
|
||||
let { text, parentMessageId: userParentMessageId, messageId: userMessageId } = userMessage;
|
||||
const userId = req.user.id;
|
||||
|
|
@ -88,7 +88,7 @@ const ask = async ({
|
|||
'Content-Type': 'text/event-stream',
|
||||
'Cache-Control': 'no-cache, no-transform',
|
||||
'Access-Control-Allow-Origin': '*',
|
||||
'X-Accel-Buffering': 'no'
|
||||
'X-Accel-Buffering': 'no',
|
||||
});
|
||||
|
||||
let responseMessageId = crypto.randomUUID();
|
||||
|
|
@ -108,10 +108,10 @@ const ask = async ({
|
|||
text: text,
|
||||
unfinished: true,
|
||||
cancelled: false,
|
||||
error: false
|
||||
error: false,
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
getPartialMessage = getPartialText;
|
||||
|
|
@ -134,9 +134,9 @@ const ask = async ({
|
|||
|
||||
sendMessage(res, {
|
||||
message: { ...userMessage, conversationId: data.conversation_id },
|
||||
created: true
|
||||
created: true,
|
||||
});
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
console.log('CLIENT RESPONSE', response);
|
||||
|
|
@ -157,7 +157,7 @@ const ask = async ({
|
|||
sender: endpointOption?.chatGptLabel || 'ChatGPT',
|
||||
unfinished: false,
|
||||
cancelled: false,
|
||||
error: false
|
||||
error: false,
|
||||
};
|
||||
|
||||
await saveMessage(responseMessage);
|
||||
|
|
@ -173,13 +173,13 @@ const ask = async ({
|
|||
conversationUpdate = {
|
||||
...conversationUpdate,
|
||||
conversationId: conversationId,
|
||||
newConversationId: newConversationId
|
||||
newConversationId: newConversationId,
|
||||
};
|
||||
} else {
|
||||
// create new conversation
|
||||
conversationUpdate = {
|
||||
...conversationUpdate,
|
||||
...endpointOption
|
||||
...endpointOption,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -195,7 +195,7 @@ const ask = async ({
|
|||
await saveMessage({
|
||||
...userMessage,
|
||||
messageId: userMessageId,
|
||||
newMessageId: newUserMassageId
|
||||
newMessageId: newUserMassageId,
|
||||
});
|
||||
userMessageId = newUserMassageId;
|
||||
|
||||
|
|
@ -204,7 +204,7 @@ const ask = async ({
|
|||
final: true,
|
||||
conversation: await getConvo(req.user.id, conversationId),
|
||||
requestMessage: userMessage,
|
||||
responseMessage: responseMessage
|
||||
responseMessage: responseMessage,
|
||||
});
|
||||
res.end();
|
||||
|
||||
|
|
@ -213,7 +213,7 @@ const ask = async ({
|
|||
const title = await response.details.title;
|
||||
await saveConvo(req.user.id, {
|
||||
conversationId: conversationId,
|
||||
title
|
||||
title,
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
|
|
@ -225,7 +225,7 @@ const ask = async ({
|
|||
unfinished: false,
|
||||
cancelled: false,
|
||||
// error: true,
|
||||
text: `${getPartialMessage() ?? ''}\n\nError message: "${error.message}"`
|
||||
text: `${getPartialMessage() ?? ''}\n\nError message: "${error.message}"`,
|
||||
};
|
||||
await saveMessage(errorMessage);
|
||||
handleError(res, errorMessage);
|
||||
|
|
|
|||
|
|
@ -23,13 +23,13 @@ router.post('/', requireJwtAuth, async (req, res) => {
|
|||
temperature: req.body?.temperature ?? 0.2,
|
||||
maxOutputTokens: req.body?.maxOutputTokens ?? 1024,
|
||||
topP: req.body?.topP ?? 0.95,
|
||||
topK: req.body?.topK ?? 40
|
||||
}
|
||||
topK: req.body?.topK ?? 40,
|
||||
},
|
||||
};
|
||||
|
||||
const availableModels = ['chat-bison', 'text-bison', 'codechat-bison'];
|
||||
if (availableModels.find((model) => model === endpointOption.modelOptions.model) === undefined) {
|
||||
return handleError(res, { text: `Illegal request: model` });
|
||||
return handleError(res, { text: 'Illegal request: model' });
|
||||
}
|
||||
|
||||
const conversationId = oldConversationId || crypto.randomUUID();
|
||||
|
|
@ -41,7 +41,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
|
|||
conversationId,
|
||||
parentMessageId,
|
||||
req,
|
||||
res
|
||||
res,
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -51,7 +51,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
|
|||
'Content-Type': 'text/event-stream',
|
||||
'Cache-Control': 'no-cache, no-transform',
|
||||
'Access-Control-Allow-Origin': '*',
|
||||
'X-Accel-Buffering': 'no'
|
||||
'X-Accel-Buffering': 'no',
|
||||
});
|
||||
let userMessage;
|
||||
let userMessageId;
|
||||
|
|
@ -84,10 +84,10 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
|
|||
text: partialText,
|
||||
unfinished: true,
|
||||
cancelled: false,
|
||||
error: false
|
||||
error: false,
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
const abortController = new AbortController();
|
||||
|
|
@ -104,14 +104,14 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
|
|||
key = require('../../../data/auth.json');
|
||||
}
|
||||
} catch (e) {
|
||||
console.log("No 'auth.json' file (service account key) found in /api/data/ for PaLM models");
|
||||
console.log('No \'auth.json\' file (service account key) found in /api/data/ for PaLM models');
|
||||
}
|
||||
|
||||
const clientOptions = {
|
||||
// debug: true, // for testing
|
||||
reverseProxyUrl: process.env.GOOGLE_REVERSE_PROXY || null,
|
||||
proxy: process.env.PROXY || null,
|
||||
...endpointOption
|
||||
...endpointOption,
|
||||
};
|
||||
|
||||
const client = new GoogleClient(key, clientOptions);
|
||||
|
|
@ -125,9 +125,9 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
|
|||
onProgress: progressCallback.call(null, {
|
||||
res,
|
||||
text,
|
||||
parentMessageId: overrideParentMessageId || userMessageId
|
||||
parentMessageId: overrideParentMessageId || userMessageId,
|
||||
}),
|
||||
abortController
|
||||
abortController,
|
||||
});
|
||||
|
||||
if (overrideParentMessageId) {
|
||||
|
|
@ -138,7 +138,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
|
|||
...endpointOption,
|
||||
...endpointOption.modelOptions,
|
||||
conversationId,
|
||||
endpoint: 'google'
|
||||
endpoint: 'google',
|
||||
});
|
||||
|
||||
await saveMessage(response);
|
||||
|
|
@ -147,7 +147,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
|
|||
final: true,
|
||||
conversation: await getConvo(req.user.id, conversationId),
|
||||
requestMessage: userMessage,
|
||||
responseMessage: response
|
||||
responseMessage: response,
|
||||
});
|
||||
res.end();
|
||||
|
||||
|
|
@ -155,7 +155,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
|
|||
const title = await titleConvo({ text, response });
|
||||
await saveConvo(req.user.id, {
|
||||
conversationId,
|
||||
title
|
||||
title,
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
|
|
@ -168,7 +168,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
|
|||
unfinished: false,
|
||||
cancelled: false,
|
||||
error: true,
|
||||
text: error.message
|
||||
text: error.message,
|
||||
};
|
||||
await saveMessage(errorMessage);
|
||||
handleError(res, errorMessage);
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ const {
|
|||
sendMessage,
|
||||
createOnProgress,
|
||||
formatSteps,
|
||||
formatAction
|
||||
formatAction,
|
||||
} = require('./handlers');
|
||||
const requireJwtAuth = require('../../../middleware/requireJwtAuth');
|
||||
|
||||
|
|
@ -44,12 +44,12 @@ router.post('/', requireJwtAuth, async (req, res) => {
|
|||
temperature: req.body?.temperature ?? 0,
|
||||
top_p: req.body?.top_p ?? 1,
|
||||
presence_penalty: req.body?.presence_penalty ?? 0,
|
||||
frequency_penalty: req.body?.frequency_penalty ?? 0
|
||||
frequency_penalty: req.body?.frequency_penalty ?? 0,
|
||||
},
|
||||
agentOptions: {
|
||||
...agentOptions,
|
||||
// agent: 'functions'
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
console.log('ask log');
|
||||
|
|
@ -63,7 +63,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
|
|||
conversationId,
|
||||
parentMessageId,
|
||||
req,
|
||||
res
|
||||
res,
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -73,7 +73,7 @@ const ask = async ({ text, endpoint, endpointOption, parentMessageId = null, con
|
|||
'Content-Type': 'text/event-stream',
|
||||
'Cache-Control': 'no-cache, no-transform',
|
||||
'Access-Control-Allow-Origin': '*',
|
||||
'X-Accel-Buffering': 'no'
|
||||
'X-Accel-Buffering': 'no',
|
||||
});
|
||||
let userMessage;
|
||||
let userMessageId;
|
||||
|
|
@ -87,7 +87,7 @@ const ask = async ({ text, endpoint, endpointOption, parentMessageId = null, con
|
|||
loading: true,
|
||||
inputs: [],
|
||||
latest: null,
|
||||
outputs: null
|
||||
outputs: null,
|
||||
};
|
||||
|
||||
try {
|
||||
|
|
@ -119,10 +119,10 @@ const ask = async ({ text, endpoint, endpointOption, parentMessageId = null, con
|
|||
model: endpointOption.modelOptions.model,
|
||||
unfinished: true,
|
||||
cancelled: false,
|
||||
error: false
|
||||
error: false,
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
const abortController = new AbortController();
|
||||
|
|
@ -149,7 +149,7 @@ const ask = async ({ text, endpoint, endpointOption, parentMessageId = null, con
|
|||
final: true,
|
||||
conversation: await getConvo(req.user.id, conversationId),
|
||||
requestMessage: userMessage,
|
||||
responseMessage: responseMessage
|
||||
responseMessage: responseMessage,
|
||||
};
|
||||
};
|
||||
|
||||
|
|
@ -164,7 +164,7 @@ const ask = async ({ text, endpoint, endpointOption, parentMessageId = null, con
|
|||
endpoint,
|
||||
reverseProxyUrl: process.env.OPENAI_REVERSE_PROXY || null,
|
||||
proxy: process.env.PROXY || null,
|
||||
...endpointOption
|
||||
...endpointOption,
|
||||
};
|
||||
|
||||
let openAIApiKey = req.body?.token ?? process.env.OPENAI_API_KEY;
|
||||
|
|
@ -211,9 +211,9 @@ const ask = async ({ text, endpoint, endpointOption, parentMessageId = null, con
|
|||
res,
|
||||
text,
|
||||
plugin,
|
||||
parentMessageId: overrideParentMessageId || userMessageId
|
||||
parentMessageId: overrideParentMessageId || userMessageId,
|
||||
}),
|
||||
abortController
|
||||
abortController,
|
||||
});
|
||||
|
||||
if (overrideParentMessageId) {
|
||||
|
|
@ -230,7 +230,7 @@ const ask = async ({ text, endpoint, endpointOption, parentMessageId = null, con
|
|||
final: true,
|
||||
conversation: await getConvo(req.user.id, conversationId),
|
||||
requestMessage: userMessage,
|
||||
responseMessage: response
|
||||
responseMessage: response,
|
||||
});
|
||||
res.end();
|
||||
|
||||
|
|
@ -243,7 +243,7 @@ const ask = async ({ text, endpoint, endpointOption, parentMessageId = null, con
|
|||
});
|
||||
await saveConvo(req.user.id, {
|
||||
conversationId: conversationId,
|
||||
title
|
||||
title,
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
|
|
@ -256,7 +256,7 @@ const ask = async ({ text, endpoint, endpointOption, parentMessageId = null, con
|
|||
unfinished: false,
|
||||
cancelled: false,
|
||||
error: true,
|
||||
text: error.message
|
||||
text: error.message,
|
||||
};
|
||||
await saveMessage(errorMessage);
|
||||
handleError(res, errorMessage);
|
||||
|
|
|
|||
|
|
@ -134,7 +134,7 @@ function formatAction(action) {
|
|||
input: getString(action.toolInput),
|
||||
thought: action.log.includes('Thought: ')
|
||||
? action.log.split('\n')[0].replace('Thought: ', '')
|
||||
: action.log.split('\n')[0]
|
||||
: action.log.split('\n')[0],
|
||||
};
|
||||
|
||||
formattedAction.thought = getString(formattedAction.thought);
|
||||
|
|
@ -161,5 +161,5 @@ module.exports = {
|
|||
createOnProgress,
|
||||
handleText,
|
||||
formatSteps,
|
||||
formatAction
|
||||
formatAction,
|
||||
};
|
||||
|
|
@ -31,8 +31,8 @@ router.post('/', requireJwtAuth, async (req, res) => {
|
|||
temperature: req.body?.temperature ?? 1,
|
||||
top_p: req.body?.top_p ?? 1,
|
||||
presence_penalty: req.body?.presence_penalty ?? 0,
|
||||
frequency_penalty: req.body?.frequency_penalty ?? 0
|
||||
}
|
||||
frequency_penalty: req.body?.frequency_penalty ?? 0,
|
||||
},
|
||||
};
|
||||
|
||||
console.log('ask log');
|
||||
|
|
@ -46,7 +46,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
|
|||
parentMessageId,
|
||||
endpoint,
|
||||
req,
|
||||
res
|
||||
res,
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -56,7 +56,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, endpoint, con
|
|||
'Content-Type': 'text/event-stream',
|
||||
'Cache-Control': 'no-cache, no-transform',
|
||||
'Access-Control-Allow-Origin': '*',
|
||||
'X-Accel-Buffering': 'no'
|
||||
'X-Accel-Buffering': 'no',
|
||||
});
|
||||
let userMessage;
|
||||
let userMessageId;
|
||||
|
|
@ -90,10 +90,10 @@ const ask = async ({ text, endpointOption, parentMessageId = null, endpoint, con
|
|||
model: endpointOption.modelOptions.model,
|
||||
unfinished: true,
|
||||
cancelled: false,
|
||||
error: false
|
||||
error: false,
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
const abortController = new AbortController();
|
||||
|
|
@ -119,7 +119,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, endpoint, con
|
|||
final: true,
|
||||
conversation: await getConvo(req.user.id, conversationId),
|
||||
requestMessage: userMessage,
|
||||
responseMessage: responseMessage
|
||||
responseMessage: responseMessage,
|
||||
};
|
||||
};
|
||||
|
||||
|
|
@ -135,7 +135,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, endpoint, con
|
|||
reverseProxyUrl: process.env.OPENAI_REVERSE_PROXY || null,
|
||||
proxy: process.env.PROXY || null,
|
||||
endpoint,
|
||||
...endpointOption
|
||||
...endpointOption,
|
||||
};
|
||||
|
||||
let openAIApiKey = req.body?.token ?? process.env.OPENAI_API_KEY;
|
||||
|
|
@ -157,9 +157,9 @@ const ask = async ({ text, endpointOption, parentMessageId = null, endpoint, con
|
|||
onProgress: progressCallback.call(null, {
|
||||
res,
|
||||
text,
|
||||
parentMessageId: overrideParentMessageId || userMessageId
|
||||
parentMessageId: overrideParentMessageId || userMessageId,
|
||||
}),
|
||||
abortController
|
||||
abortController,
|
||||
});
|
||||
|
||||
if (overrideParentMessageId) {
|
||||
|
|
@ -174,7 +174,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, endpoint, con
|
|||
final: true,
|
||||
conversation: await getConvo(req.user.id, conversationId),
|
||||
requestMessage: userMessage,
|
||||
responseMessage: response
|
||||
responseMessage: response,
|
||||
});
|
||||
res.end();
|
||||
|
||||
|
|
@ -183,11 +183,11 @@ const ask = async ({ text, endpointOption, parentMessageId = null, endpoint, con
|
|||
text,
|
||||
response,
|
||||
openAIApiKey,
|
||||
azure: endpoint === 'azureOpenAI'
|
||||
azure: endpoint === 'azureOpenAI',
|
||||
});
|
||||
await saveConvo(req.user.id, {
|
||||
conversationId,
|
||||
title
|
||||
title,
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
|
|
@ -204,7 +204,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, endpoint, con
|
|||
unfinished: false,
|
||||
cancelled: false,
|
||||
error: true,
|
||||
text: error.message
|
||||
text: error.message,
|
||||
};
|
||||
await saveMessage(errorMessage);
|
||||
handleError(res, errorMessage);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ const {
|
|||
resetPasswordRequestController,
|
||||
resetPasswordController,
|
||||
// refreshController,
|
||||
registrationController
|
||||
registrationController,
|
||||
} = require('../controllers/AuthController');
|
||||
const { loginController } = require('../controllers/auth/LoginController');
|
||||
const { logoutController } = require('../controllers/auth/LogoutController');
|
||||
|
|
|
|||
|
|
@ -5,9 +5,9 @@ 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 openidLoginEnabled = !!process.env.OPENID_CLIENT_ID
|
||||
&& !!process.env.OPENID_CLIENT_SECRET
|
||||
&& !!process.env.OPENID_ISSUER
|
||||
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;
|
||||
|
|
@ -16,7 +16,7 @@ router.get('/', async function (req, res) {
|
|||
const serverDomain = process.env.DOMAIN_SERVER || 'http://localhost:3080';
|
||||
const registrationEnabled = process.env.ALLOW_REGISTRATION === 'true';
|
||||
const socialLoginEnabled = process.env.ALLOW_SOCIAL_LOGIN === 'true';
|
||||
|
||||
|
||||
return res.status(200).send({
|
||||
appTitle,
|
||||
googleLoginEnabled,
|
||||
|
|
@ -27,12 +27,12 @@ router.get('/', async function (req, res) {
|
|||
discordLoginEnabled,
|
||||
serverDomain,
|
||||
registrationEnabled,
|
||||
socialLoginEnabled
|
||||
socialLoginEnabled,
|
||||
});
|
||||
|
||||
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
return res.status(500).send({error: err.message});
|
||||
return res.status(500).send({ error: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -72,13 +72,13 @@ router.get('/', async function (req, res) {
|
|||
const chatGPTBrowser = process.env.CHATGPT_TOKEN
|
||||
? {
|
||||
userProvide: process.env.CHATGPT_TOKEN == 'user_provided',
|
||||
availableModels: getChatGPTBrowserModels()
|
||||
availableModels: getChatGPTBrowserModels(),
|
||||
}
|
||||
: false;
|
||||
const anthropic = process.env.ANTHROPIC_API_KEY
|
||||
? {
|
||||
userProvide: process.env.ANTHROPIC_API_KEY == 'user_provided',
|
||||
availableModels: getAnthropicModels()
|
||||
availableModels: getAnthropicModels(),
|
||||
}
|
||||
: false;
|
||||
|
||||
|
|
|
|||
|
|
@ -25,5 +25,5 @@ module.exports = {
|
|||
tokenizer,
|
||||
endpoints,
|
||||
plugins,
|
||||
config
|
||||
config,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -12,8 +12,8 @@ router.get(
|
|||
'/google',
|
||||
passport.authenticate('google', {
|
||||
scope: ['openid', 'profile', 'email'],
|
||||
session: false
|
||||
})
|
||||
session: false,
|
||||
}),
|
||||
);
|
||||
|
||||
router.get(
|
||||
|
|
@ -22,25 +22,25 @@ router.get(
|
|||
failureRedirect: `${domains.client}/login`,
|
||||
failureMessage: true,
|
||||
session: false,
|
||||
scope: ['openid', 'profile', 'email']
|
||||
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
|
||||
secure: isProduction,
|
||||
});
|
||||
res.redirect(domains.client);
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
router.get(
|
||||
'/facebook',
|
||||
passport.authenticate('facebook', {
|
||||
scope: ['public_profile', 'email'],
|
||||
session: false
|
||||
})
|
||||
session: false,
|
||||
}),
|
||||
);
|
||||
|
||||
router.get(
|
||||
|
|
@ -49,24 +49,24 @@ router.get(
|
|||
failureRedirect: `${domains.client}/login`,
|
||||
failureMessage: true,
|
||||
session: false,
|
||||
scope: ['public_profile', 'email']
|
||||
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
|
||||
secure: isProduction,
|
||||
});
|
||||
res.redirect(domains.client);
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
router.get(
|
||||
'/openid',
|
||||
passport.authenticate('openid', {
|
||||
session: false
|
||||
})
|
||||
session: false,
|
||||
}),
|
||||
);
|
||||
|
||||
router.get(
|
||||
|
|
@ -74,26 +74,25 @@ router.get(
|
|||
passport.authenticate('openid', {
|
||||
failureRedirect: `${domains.client}/login`,
|
||||
failureMessage: true,
|
||||
session: false
|
||||
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
|
||||
secure: isProduction,
|
||||
});
|
||||
res.redirect(domains.client);
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
|
||||
router.get(
|
||||
'/github',
|
||||
passport.authenticate('github', {
|
||||
scope: ['user:email', 'read:user'],
|
||||
session: false
|
||||
})
|
||||
session: false,
|
||||
}),
|
||||
);
|
||||
|
||||
router.get(
|
||||
|
|
@ -102,26 +101,25 @@ router.get(
|
|||
failureRedirect: `${domains.client}/login`,
|
||||
failureMessage: true,
|
||||
session: false,
|
||||
scope: ['user:email', 'read:user']
|
||||
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
|
||||
secure: isProduction,
|
||||
});
|
||||
res.redirect(domains.client);
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
|
||||
router.get(
|
||||
'/discord',
|
||||
passport.authenticate('discord', {
|
||||
scope: ['identify', 'email'],
|
||||
session: false
|
||||
})
|
||||
session: false,
|
||||
}),
|
||||
);
|
||||
|
||||
router.get(
|
||||
|
|
@ -130,17 +128,17 @@ router.get(
|
|||
failureRedirect: `${domains.client}/login`,
|
||||
failureMessage: true,
|
||||
session: false,
|
||||
scope: ['identify', 'email']
|
||||
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
|
||||
secure: isProduction,
|
||||
});
|
||||
res.redirect(domains.client);
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
module.exports = router;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const { savePrompt, getPrompts, deletePrompts } = require('../../models/Prompt');
|
||||
const { getPrompts } = require('../../models/Prompt');
|
||||
|
||||
router.get('/', async (req, res) => {
|
||||
let filter = {};
|
||||
|
|
|
|||
|
|
@ -42,16 +42,16 @@ router.get('/', requireJwtAuth, async function (req, res) {
|
|||
{
|
||||
attributesToHighlight: ['text'],
|
||||
highlightPreTag: '**',
|
||||
highlightPostTag: '**'
|
||||
highlightPostTag: '**',
|
||||
},
|
||||
true
|
||||
true,
|
||||
)
|
||||
).hits.map((message) => {
|
||||
const { _formatted, ...rest } = message;
|
||||
return {
|
||||
...rest,
|
||||
searchResult: true,
|
||||
text: _formatted.text
|
||||
text: _formatted.text,
|
||||
};
|
||||
});
|
||||
const titles = (await Conversation.meiliSearch(q)).hits;
|
||||
|
|
@ -111,7 +111,7 @@ router.get('/enable', async function (req, res) {
|
|||
try {
|
||||
const client = new MeiliSearch({
|
||||
host: process.env.MEILI_HOST,
|
||||
apiKey: process.env.MEILI_MASTER_KEY
|
||||
apiKey: process.env.MEILI_MASTER_KEY,
|
||||
});
|
||||
|
||||
const { status } = await client.health();
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ const updateUserPluginAuth = async (userId, authField, pluginKey, value) => {
|
|||
if (pluginAuth) {
|
||||
const pluginAuth = await PluginAuth.updateOne(
|
||||
{ userId, authField },
|
||||
{ $set: { value: encryptedValue } }
|
||||
{ $set: { value: encryptedValue } },
|
||||
);
|
||||
return pluginAuth;
|
||||
} else {
|
||||
|
|
@ -55,7 +55,7 @@ const updateUserPluginAuth = async (userId, authField, pluginKey, value) => {
|
|||
userId,
|
||||
authField,
|
||||
value: encryptedValue,
|
||||
pluginKey
|
||||
pluginKey,
|
||||
});
|
||||
newPluginAuth.save();
|
||||
return newPluginAuth;
|
||||
|
|
@ -79,5 +79,5 @@ const deleteUserPluginAuth = async (userId, authField) => {
|
|||
module.exports = {
|
||||
getUserPluginAuthValue,
|
||||
updateUserPluginAuth,
|
||||
deleteUserPluginAuth
|
||||
deleteUserPluginAuth,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -5,13 +5,13 @@ const updateUserPluginsService = async (user, pluginKey, action) => {
|
|||
if (action === 'install') {
|
||||
const response = await User.updateOne(
|
||||
{ _id: user._id },
|
||||
{ $set: { plugins: [...user.plugins, pluginKey] } }
|
||||
{ $set: { plugins: [...user.plugins, pluginKey] } },
|
||||
);
|
||||
return response;
|
||||
} else if (action === 'uninstall') {
|
||||
const response = await User.updateOne(
|
||||
{ _id: user._id },
|
||||
{ $set: { plugins: user.plugins.filter((plugin) => plugin !== pluginKey) } }
|
||||
{ $set: { plugins: user.plugins.filter((plugin) => plugin !== pluginKey) } },
|
||||
);
|
||||
return response;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ const logoutUser = async (user, refreshToken) => {
|
|||
try {
|
||||
const userFound = await User.findById(user._id);
|
||||
const tokenIndex = userFound.refreshToken.findIndex(
|
||||
(item) => item.refreshToken === refreshToken
|
||||
(item) => item.refreshToken === refreshToken,
|
||||
);
|
||||
|
||||
if (tokenIndex !== -1) {
|
||||
|
|
@ -45,7 +45,7 @@ const registerUser = async (user) => {
|
|||
console.info(
|
||||
'Route: register - Joi Validation Error',
|
||||
{ name: 'Request params:', value: user },
|
||||
{ name: 'Validation error:', value: error.details }
|
||||
{ name: 'Validation error:', value: error.details },
|
||||
);
|
||||
|
||||
return { status: 422, message: error.details[0].message };
|
||||
|
|
@ -60,7 +60,7 @@ const registerUser = async (user) => {
|
|||
console.info(
|
||||
'Register User - Email in use',
|
||||
{ name: 'Request params:', value: user },
|
||||
{ name: 'Existing user:', value: existingUser }
|
||||
{ name: 'Existing user:', value: existingUser },
|
||||
);
|
||||
|
||||
// Sleep for 1 second
|
||||
|
|
@ -80,7 +80,7 @@ const registerUser = async (user) => {
|
|||
username,
|
||||
name,
|
||||
avatar: null,
|
||||
role: isFirstRegisteredUser ? 'ADMIN' : 'USER'
|
||||
role: isFirstRegisteredUser ? 'ADMIN' : 'USER',
|
||||
});
|
||||
|
||||
// todo: implement refresh token
|
||||
|
|
@ -118,7 +118,7 @@ const requestPasswordReset = async (email) => {
|
|||
await new Token({
|
||||
userId: user._id,
|
||||
token: hash,
|
||||
createdAt: Date.now()
|
||||
createdAt: Date.now(),
|
||||
}).save();
|
||||
|
||||
const link = `${domains.client}/reset-password?token=${resetToken}&userId=${user._id}`;
|
||||
|
|
@ -128,9 +128,9 @@ const requestPasswordReset = async (email) => {
|
|||
'Password Reset Request',
|
||||
{
|
||||
name: user.name,
|
||||
link: link
|
||||
link: link,
|
||||
},
|
||||
'./template/requestResetPassword.handlebars'
|
||||
'./template/requestResetPassword.handlebars',
|
||||
);
|
||||
return { link };
|
||||
};
|
||||
|
|
@ -166,9 +166,9 @@ const resetPassword = async (userId, token, password) => {
|
|||
user.email,
|
||||
'Password Reset Successfully',
|
||||
{
|
||||
name: user.name
|
||||
name: user.name,
|
||||
},
|
||||
'./template/resetPassword.handlebars'
|
||||
'./template/resetPassword.handlebars',
|
||||
);
|
||||
|
||||
await passwordResetToken.deleteOne();
|
||||
|
|
@ -180,5 +180,5 @@ module.exports = {
|
|||
registerUser,
|
||||
logoutUser,
|
||||
requestPasswordReset,
|
||||
resetPassword
|
||||
resetPassword,
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue