🔧 fix: Fixed agent actions access

This commit is contained in:
Atef Bellaaj 2025-06-30 16:35:25 +02:00 committed by Danny Avila
parent 27da0c6d9f
commit b03341517d
No known key found for this signature in database
GPG key ID: BF31EEB2C5CA0956

View file

@ -9,11 +9,13 @@ const {
removeNullishValues, removeNullishValues,
} = require('librechat-data-provider'); } = require('librechat-data-provider');
const { encryptMetadata, domainParser } = require('~/server/services/ActionService'); const { encryptMetadata, domainParser } = require('~/server/services/ActionService');
const { findAccessibleResources } = require('~/server/services/PermissionService');
const { updateAction, getActions, deleteAction } = require('~/models/Action'); const { updateAction, getActions, deleteAction } = require('~/models/Action');
const { isActionDomainAllowed } = require('~/server/services/domains'); const { isActionDomainAllowed } = require('~/server/services/domains');
const { canAccessAgentResource } = require('~/server/middleware'); const { canAccessAgentResource } = require('~/server/middleware');
const { getAgent, updateAgent } = require('~/models/Agent'); const { getAgent, updateAgent } = require('~/models/Agent');
const { getRoleByName } = require('~/models/Role'); const { getRoleByName } = require('~/models/Role');
const { getListAgentsByAccess } = require('~/models/Agent');
const router = express.Router(); const router = express.Router();
@ -31,9 +33,22 @@ const checkAgentCreate = generateCheckAccess({
*/ */
router.get('/', async (req, res) => { router.get('/', async (req, res) => {
try { try {
// Get all actions for the user (admin permissions handled by middleware if needed) const userId = req.user.id;
const searchParams = { user: req.user.id }; const editableAgentObjectIds = await findAccessibleResources({
res.json(await getActions(searchParams)); userId,
resourceType: 'agent',
requiredPermissions: PermissionBits.EDIT,
});
const agentsResponse = await getListAgentsByAccess({
accessibleIds: editableAgentObjectIds,
});
const editableAgentIds = agentsResponse.data.map((agent) => agent.id);
const actions =
editableAgentIds.length > 0 ? await getActions({ agent_id: { $in: editableAgentIds } }) : [];
res.json(actions);
} catch (error) { } catch (error) {
res.status(500).json({ error: error.message }); res.status(500).json({ error: error.message });
} }