| | const { logger } = require('@librechat/data-schemas'); |
| | const { Constants, isAgentsEndpoint, ResourceType } = require('librechat-data-provider'); |
| | const { canAccessResource } = require('./canAccessResource'); |
| | const { getAgent } = require('~/models/Agent'); |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | const resolveAgentIdFromBody = async (agentCustomId) => { |
| | |
| | if (agentCustomId === Constants.EPHEMERAL_AGENT_ID) { |
| | return null; |
| | } |
| |
|
| | return await getAgent({ id: agentCustomId }); |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | const canAccessAgentFromBody = (options) => { |
| | const { requiredPermission } = options; |
| |
|
| | |
| | if (!requiredPermission || typeof requiredPermission !== 'number') { |
| | throw new Error('canAccessAgentFromBody: requiredPermission is required and must be a number'); |
| | } |
| |
|
| | return async (req, res, next) => { |
| | try { |
| | const { endpoint, agent_id } = req.body; |
| | let agentId = agent_id; |
| |
|
| | if (!isAgentsEndpoint(endpoint)) { |
| | agentId = Constants.EPHEMERAL_AGENT_ID; |
| | } |
| |
|
| | if (!agentId) { |
| | return res.status(400).json({ |
| | error: 'Bad Request', |
| | message: 'agent_id is required in request body', |
| | }); |
| | } |
| |
|
| | |
| | if (agentId === Constants.EPHEMERAL_AGENT_ID) { |
| | return next(); |
| | } |
| |
|
| | const agentAccessMiddleware = canAccessResource({ |
| | resourceType: ResourceType.AGENT, |
| | requiredPermission, |
| | resourceIdParam: 'agent_id', |
| | idResolver: () => resolveAgentIdFromBody(agentId), |
| | }); |
| |
|
| | const tempReq = { |
| | ...req, |
| | params: { |
| | ...req.params, |
| | agent_id: agentId, |
| | }, |
| | }; |
| |
|
| | return agentAccessMiddleware(tempReq, res, next); |
| | } catch (error) { |
| | logger.error('Failed to validate agent access permissions', error); |
| | return res.status(500).json({ |
| | error: 'Internal Server Error', |
| | message: 'Failed to validate agent access permissions', |
| | }); |
| | } |
| | }; |
| | }; |
| |
|
| | module.exports = { |
| | canAccessAgentFromBody, |
| | }; |
| |
|