| | const express = require('express'); |
| | const { ResourceType, PermissionBits } = require('librechat-data-provider'); |
| | const { |
| | getUserEffectivePermissions, |
| | updateResourcePermissions, |
| | getResourcePermissions, |
| | getResourceRoles, |
| | searchPrincipals, |
| | } = require('~/server/controllers/PermissionsController'); |
| | const { requireJwtAuth, checkBan, uaParser, canAccessResource } = require('~/server/middleware'); |
| | const { checkPeoplePickerAccess } = require('~/server/middleware/checkPeoplePickerAccess'); |
| |
|
| | const router = express.Router(); |
| |
|
| | |
| | router.use(requireJwtAuth); |
| | router.use(checkBan); |
| | router.use(uaParser); |
| |
|
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| | router.get('/search-principals', checkPeoplePickerAccess, searchPrincipals); |
| |
|
| | |
| | |
| | |
| | |
| | router.get('/:resourceType/roles', getResourceRoles); |
| |
|
| | |
| | |
| | |
| | |
| | router.get('/:resourceType/:resourceId', getResourcePermissions); |
| |
|
| | |
| | |
| | |
| | |
| | router.put( |
| | '/:resourceType/:resourceId', |
| | |
| | (req, res, next) => { |
| | const { resourceType } = req.params; |
| | let middleware; |
| |
|
| | if (resourceType === ResourceType.AGENT) { |
| | middleware = canAccessResource({ |
| | resourceType: ResourceType.AGENT, |
| | requiredPermission: PermissionBits.SHARE, |
| | resourceIdParam: 'resourceId', |
| | }); |
| | } else if (resourceType === ResourceType.PROMPTGROUP) { |
| | middleware = canAccessResource({ |
| | resourceType: ResourceType.PROMPTGROUP, |
| | requiredPermission: PermissionBits.SHARE, |
| | resourceIdParam: 'resourceId', |
| | }); |
| | } else { |
| | return res.status(400).json({ |
| | error: 'Bad Request', |
| | message: `Unsupported resource type: ${resourceType}`, |
| | }); |
| | } |
| |
|
| | |
| | middleware(req, res, next); |
| | }, |
| | updateResourcePermissions, |
| | ); |
| |
|
| | |
| | |
| | |
| | |
| | router.get('/:resourceType/:resourceId/effective', getUserEffectivePermissions); |
| |
|
| | module.exports = router; |
| |
|