| 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; |
|
|