Appearance
Permission Dialog
File Information
- Path:
components/dam/Dialogs/PermissionDialog.vue - Purpose: Manage public/private permissions for assets, folders, and collections
Overview
The Permission Dialog component provides an interface for changing resource visibility between public and private. It supports permission changes for assets, folders, and collections with confirmation dialogs and warning messages.
Key Features
Permission Toggle
- Toggle between public/private
- Current permission display
- Permission selection
- Visual indicators
Permission Confirmation
- Confirmation for public changes
- Warning messages
- Permission change confirmation
- Cancel option
Bulk Permission Changes
- Change multiple resources
- Batch permission updates
- Progress tracking
- Error handling
Resource Type Support
- Asset permissions
- Folder permissions
- Collection permissions
- Different handling per type
Props
javascript
{
dialog: {
type: Boolean,
default: false
},
resource: {
type: Object,
required: true
// Asset, folder, or collection object
},
resourceType: {
type: String,
required: true
// 'asset', 'folder', 'collection'
},
workspaceId: {
type: [String, Number],
required: true
},
currentPermission: {
type: String,
default: 'private'
// 'public' or 'private'
}
}Data Properties
javascript
{
selectedPermission: 'private', // Selected permission
loading: false, // Loading state
warningMessage: null // Warning message
}Computed Properties
canChangePermission
Checks if user can change permissions
isPublic
Checks if current permission is public
permissionWarning
Returns warning message for permission change
Methods
changePermission()
Changes resource permission:
- Validates permission change
- Shows warning if making public
- Updates permission via API
- Emits permission-changed event
- Handles errors
showPublicWarning()
Shows public permission warning:
- Displays confirmation dialog
- Returns user confirmation
- Handles cancellation
canChangePermission()
Checks permission change capability:
- Validates user permissions
- Checks role-based access
- Returns boolean
Events
close- Dialog closedpermission-changed- Permission changed successfullyerror- Permission change error
API Endpoints
Change Permission
- Endpoint:
POST /digital-assets/permission/change-permission - Request Body:json
{ "workspace_id": 123, "resource_type": "asset", "resource_id": 456, "permission": "public" } - Response: Updated permission object
Usage Examples
Basic Usage
vue
<template>
<PermissionDialog
:dialog="showPermissionDialog"
:resource="selectedAsset"
:resource-type="'asset'"
:workspace-id="workspaceId"
:current-permission="currentPermission"
@close="showPermissionDialog = false"
@permission-changed="handlePermissionChanged"
/>
</template>
<script>
import PermissionDialog from '~/components/dam/Dialogs/PermissionDialog.vue'
export default {
components: {
PermissionDialog
},
methods: {
handlePermissionChanged({ resource_id, permission }) {
// Update local state
this.updateResourcePermission(resource_id, permission)
}
}
}
</script>Integration Points
- Asset Components: Permission management
- Folder Components: Folder permissions
- Collection Components: Collection permissions
- Permission System: RBAC integration
Notes for Development
- Permission changes require admin role
- Public changes show warning
- Bulk changes supported
- Permission changes immediate
- Error handling required
Related Documentation
- Asset Permission Dialog - Asset-specific confirmation
- Permissions Feature - Complete permission system
- Access Control - Access control system