Skip to content

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

  1. Permission Toggle

    • Toggle between public/private
    • Current permission display
    • Permission selection
    • Visual indicators
  2. Permission Confirmation

    • Confirmation for public changes
    • Warning messages
    • Permission change confirmation
    • Cancel option
  3. Bulk Permission Changes

    • Change multiple resources
    • Batch permission updates
    • Progress tracking
    • Error handling
  4. 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 closed
  • permission-changed - Permission changed successfully
  • error - 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