This is the official documentation of the @forestadmin/agent Node.js agent.
Route overrides ↗ allowed customizing the behavior of the routes exposed by the agent.
This very low-level feature was used to implement many use cases:
Attach handlers to events in the UI
Customize filtering, search and sort behaviors
Other advanced use cases.
Because our new agent API is higher-level, the protocol used to communicate between the agent and the application can no longer be manipulated.
Code cheatsheet
What was the route override used for?
How to migrate it?
Add custom permissions
Add validation to fields
Add validation to whole records
Run code on UI events
Change the search behavior
Change the filtering behavior of fields
Change the sort behavior of fields
Other use case
Examples
Add custom permissions
Custom permissions would better be implemented by using the Roles ↗ feature from the UI.
router.delete('/companies/:recordId',permissionMiddlewareCreator.delete(), (request, response, next) => {const { params,query,user } = request;if (user.email !=='sandro.munda@forestadmin.com') { response.status(403).send('This collection is protected, you cannot remove from it.');return; }next(); },);
agent.customizeCollection('customers', companies => {// Add a hook to the "customers" collectioncompanies.addHook('Before','Delete',async context => {if (context.caller.email !=='sandro.munda@forestadmin.com')context.throwForbiddenError('This collection is protected, you cannot remove from it.', ); });});
Add validation to fields
functionhandler(request, response, next) {constpatch=request.body.data.attributes;if (path.name && /^Forest/.test(path.name)) {return"All company names should begin with 'Forest'."; }if (error) {response.status(400).send(error); } else {next(); }}router.post('/companies',permissionMiddlewareCreator.create(), handler);router.put('/companies/:id',permissionMiddlewareCreator.update(), handler);