Appearance
Role-Based Access
Overview
The Role-Based Access Control (RBAC) system provides fine-grained permission management with roles, permissions, and access rules for different modules and resources. It ensures users only have access to features and data appropriate for their role.
Architecture
Role Hierarchy
- Super Admin: Full system access
- Workspace Admin: Full workspace access
- DAM Admin: Full DAM module access
- DAM Curator: Content management access
- DAM Manager: Limited management access
- Viewer: Read-only access
- Guest: Limited guest access
Permission Structure
Permission Types
javascript
{
// Module Access
"can-access-dam-module": true,
// Asset Permissions
"can-view-assets": true,
"can-create-assets": true,
"can-edit-assets": true,
"can-delete-assets": false,
"can-share-assets": true,
"can-download-assets": true,
// Folder Permissions
"can-view-folders": true,
"can-create-folders": true,
"can-edit-folders": true,
"can-delete-folders": false,
// Settings Permissions
"can-access-settings": false,
"can-manage-users": false,
"can-manage-subscription": false
}Frontend Implementation
Permission Middleware
javascript
// middleware/can-access-dam-module.js
export default async function ({ route, store, redirect, $auth }) {
const user = $auth.user
const workspaceId = route.params.workspace_id
// Check workspace access
const hasWorkspaceAccess = user.accessibleWorkspaces.includes(workspaceId)
if (!hasWorkspaceAccess) {
return redirect('/')
}
// Check DAM module access
const hasDamAccess = user.permissions.includes('can-access-dam-module')
if (!hasDamAccess) {
return redirect(`/${workspaceId}`)
}
// Check role
const damRole = user.workspaceRoles?.[workspaceId]?.dam_role
const validRoles = ['admin', 'curator', 'manager']
if (!validRoles.includes(damRole)) {
return redirect(`/${workspaceId}`)
}
}Permission Check Component
vue
<template>
<div>
<v-btn
v-if="canCreate"
@click="createAsset"
>
Create Asset
</v-btn>
<v-btn
v-if="canDelete"
@click="deleteAsset"
color="error"
>
Delete
</v-btn>
</div>
</template>
<script>
export default {
computed: {
canCreate() {
return this.$auth.user.permissions.includes('can-create-assets')
},
canDelete() {
return this.$auth.user.permissions.includes('can-delete-assets')
}
}
}
</script>API Design
Get User Permissions
Endpoint: GET /api/users/:user_id/permissions
Query Parameters:
workspace_id(required) - Workspace identifier
Response:
json
{
"permissions": [
"can-access-dam-module",
"can-view-assets",
"can-create-assets",
"can-edit-assets",
"can-share-assets"
],
"role": "dam_curator",
"workspace_id": 123
}Role Definitions
DAM Admin
- Full access to all DAM features
- Can manage users and permissions
- Can access settings
- Can delete any content
DAM Curator
- Can create, edit, and organize assets
- Can manage folders and collages
- Cannot delete content
- Cannot access settings
DAM Manager
- Can view and download assets
- Can create folders
- Limited editing permissions
- Cannot delete content
Workflow
Permission Check Flow
1. User navigates to route
↓
2. Middleware checks authentication
↓
3. Middleware checks workspace access
↓
4. Middleware checks module access
↓
5. Middleware checks role permissions
↓
6. If all checks pass → Render page
↓
7. If check fails → Redirect to appropriate pageRelated Documentation
- Management Modules - Module system
- Middleware - Route protection
- Sharing and Permissions - Sharing system