mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-21 10:50:14 +01:00
🔧 fix: Fixed agent actions access
This commit is contained in:
parent
27da0c6d9f
commit
b03341517d
1 changed files with 18 additions and 3 deletions
|
|
@ -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 });
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue