Fork CMS uses a group-based permission system where users belong to groups that define access to backend modules and specific actions within those modules.
Built-in Groups
| Group | Dashboard | Content Pages | Blog | Users | Settings | Translations |
|---|---|---|---|---|---|---|
| Admin | Yes | Yes | Yes | Yes | Yes | Yes |
| Pages User | Yes | Yes | No | No | No | No |
Admin Group
Full access to all backend modules including user management, settings, themes, analytics integration, and all content areas.
Pages User Group
Can only manage pages. No access to blog, user management, settings, or other modules.
Permission Granularity
Fork CMS permissions work at the module + action level:
// Permissions are checked as: module/action
// Examples:
// Pages/Add, Pages/Edit, Pages/Delete
// Blog/Add, Blog/Edit, Blog/Settings
// Users/Add, Users/Edit, Users/Delete
// Settings/Index (access to settings module)
// Analytics/Index (access to analytics module)
Each group can be granted or denied access to individual module actions.
Creating Custom Groups
Navigate to Users > Groups > Add Group in the backend:
- Name the group (e.g., "Analytics Manager")
- Under Dashboard, select which widgets to show
- Under Modules, check specific module/action permissions
- Save the group
Analytics-Relevant Permissions
Fork CMS has a built-in Analytics module that connects to Google Analytics. To configure it:
| Action | Required Permission |
|---|---|
| View analytics data | Analytics/Index |
| Configure GA connection | Analytics/Settings (Admin only) |
| Edit page templates (for custom scripts) | Pages/Edit + access to theme files |
{* Fork CMS uses Twig templates *}
{* Edit Core/Layout/Templates/Head.html.twig *}
<head>
{{ block('meta') }}
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXXXXX');
</script>
</head>
Best Practices
- Create purpose-specific groups rather than giving Admin access broadly
- Use the built-in Analytics module for GA integration when possible
- Restrict Settings module access to Admin group only
- Audit group memberships via Users > Groups regularly
- Fork CMS permissions are database-stored -- back up the database before changing permissions