Inspired from [strapi-plugin-route-permission](https://github.com/andreciornavei/strapi-plugin-route-permission), same plugin but for strapi V3.
npm install strapi5-plugin-route-permissionbash
npm install strapi5-plugin-server-route-permission
`
With yarn:
`bash
yarn add strapi5-plugin-server-route-permission
`
---
โจ _Getting Started_
Add an array of roles on each route configuration
$3
Core route example :
`js
"use strict";
/**
* subscriber router
*/
import { factories } from '@strapi/strapi';
export default factories.createCoreRouter('api::subscriber.subscriber', {
config: {
create: {
// @ts-ignore
roles: ['public']
},
find: {
// @ts-ignore
roles: ['public']
},
},
});
`
$3
You can configure the plugin's bootstrap behavior by setting the bootstrapMode in your plugin configuration:
`typescript
// config/plugins.ts
export default () => ({
'strapi5-plugin-route-permission': {
enabled: true,
resolve: './src/plugins/strapi5-plugin-route-permission',
config: {
bootstrapMode: 'default' // 'default' | 'restore' | 'soft' | 'hard'
}
},
});
`
#### Bootstrap Modes:
- default (Default): Only synchronizes new permissions, preserves existing ones
- restore: Clears plugin history and recreates all route permissions
- soft: Removes external permissions while preserving native Strapi permissions, then syncs
- hard: Removes ALL external permissions, keeping only plugin-managed ones (use with caution)
๐ For detailed configuration options, see CONFIGURATION.md
---
๏ฟฝ๏ธ _Admin Panel Features_
$3
The main dashboard provides a comprehensive view of all configured routes with advanced filtering and pagination:

#### Status Indicators
Each route displays a status indicator with colored badges:
- ๐ข Green Badge: Permission is properly configured and active
- ๏ฟฝ Red Badge: Permission is missing or disabled
- ๏ฟฝ Yellow Badge: Role doesn't exist
- ๐ต Blue Badge: External permission (not managed by this plugin)
#### Filtering Options
- Role Filter: Filter routes by specific roles (Public, Authenticated, etc.)
- Method Filter: Filter by HTTP methods (GET, POST, PUT, DELETE)
- Status Filter: Filter by permission status
- Search: Search routes by path, action, or description
#### Pagination
- Custom Pagination: Configurable page sizes (10, 25, 50, 100 items per page)
- Navigation: Previous/Next buttons with page indicators
- Total Count: Display total number of routes and current page info
$3
Advanced management options available in the settings:

#### Restore Permissions
- Full Restore: Removes configured routes history and reconfigures all routes
- Instant Operation: No server restart required
- Safe Operation: Preserves existing permissions while syncing new ones
#### Cleanup External Permissions
Soft Cleanup (Recommended):
- Removes only non-native external permissions
- Preserves Strapi native permissions (users-permissions, auth, etc.)
- Preserves API permissions (api::*)
- Safe for production use
Hard Cleanup (Use with caution):
- Removes ALL external permissions not managed by this plugin
- Only preserves permissions explicitly managed by this plugin
- โ ๏ธ Warning: May break other plugins or custom permissions
#### Available Actions
1. Restore Permissions: Synchronizes all route permissions
2. Soft Cleanup: Removes non-essential external permissions
3. Hard Cleanup: Removes all external permissions (advanced users only)
---
๐ _Result_
On strapi startup it adds only new permissions configured in your route config:

$3
`
[2025-01-15 10:30:15.123] info: Found 25 existing route permissions in database
[2025-01-15 10:30:15.456] info: Permission on role public ::::: api::subscriber.subscriber.create already exists
[2025-01-15 10:30:15.789] info: Generating permission on role authenticated ::::: api::post.post.find
[2025-01-15 10:30:16.012] info: Route permission sync ::::: 3 created, 22 synced permissions
`
---
๐ง _API Endpoints_
The plugin provides several API endpoints for programmatic access:
- GET /api/strapi5-plugin-route-permission/configured-routes - Get all configured routes with filtering
- POST /api/strapi5-plugin-route-permission/restore - Restore permissions
- POST /api/strapi5-plugin-route-permission/cleanup-soft - Soft cleanup external permissions
- POST /api/strapi5-plugin-route-permission/cleanup-hard - Hard cleanup external permissions
---
๐ _Bugs_
If any bugs are found please report them as a Github Issue
$3
You can put this line above the role property: // @ts-ignore`