| const { SystemRoles } = require('librechat-data-provider'); |
| const { getAssistant } = require('~/models/Assistant'); |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| const validateAuthor = async ({ req, openai, overrideEndpoint, overrideAssistantId }) => { |
| if (req.user.role === SystemRoles.ADMIN) { |
| return; |
| } |
|
|
| const endpoint = overrideEndpoint ?? req.body.endpoint ?? req.query.endpoint; |
| const assistant_id = |
| overrideAssistantId ?? req.params.id ?? req.body.assistant_id ?? req.query.assistant_id; |
|
|
| const appConfig = req.config; |
| |
| const assistantsConfig = appConfig.endpoints?.[endpoint]; |
| if (!assistantsConfig) { |
| return; |
| } |
|
|
| if (!assistantsConfig.privateAssistants) { |
| return; |
| } |
|
|
| const assistantDoc = await getAssistant({ assistant_id, user: req.user.id }); |
| if (assistantDoc) { |
| return; |
| } |
| const assistant = await openai.beta.assistants.retrieve(assistant_id); |
| if (req.user.id !== assistant?.metadata?.author) { |
| throw new Error(`Assistant ${assistant_id} is not authored by the user.`); |
| } |
| }; |
|
|
| module.exports = validateAuthor; |
|
|