Route Plugins
Route plugins allow you to add custom routes to SnowCMS, registered at /c/{route}
.
Your route plugins should be in src/routes
.
Directorysrc
Directoryroutes
- routes.config.ts
- example-plugin.ts
import { defineRoutePlugin } from '@binaryfrost/snowcms/server';
export default defineRoutePlugin({ name: 'test-plugin', plugin: ({ logger }) => (router) => { logger.log('Registering routes');
router.get('/custom-route', (req, res) => { handleAccessControl(res, req.user, 'USER');
res.json({ message: 'Only users with the USER role and higher can access this route' }); });
// Every async route handler that can throw an error must be wrapped in asyncRouteFix(). Failure to do so will result in the whole server crashing if the route errors. router.get('/users', asyncRouteFix(async (req, res) => { const users = await db()<User>('users') .select('id');
res.json({ message: 'You can also access the database in routes', users }); })); }});
import { defineRoutePluginConfig } from '@binaryfrost/snowcms/server';import examplePlugin from './example-plugin';
export default defineRoutePluginConfig({ plugins: [ examplePlugin ]});