Skip to content

@memberjunction/ng-resource-permissions

Angular components for managing resource-level permissions in MemberJunction applications. Provides interfaces for viewing, granting, editing, and revoking permissions for any resource type, viewing available resources, and requesting access to restricted resources.

Terminal window
npm install @memberjunction/ng-resource-permissions

The resource permissions package provides three components that together form a complete permission management workflow: managing who can access a resource and at what level, viewing which resources a user has access to, and requesting access to restricted resources. All permission changes are grouped in transactions for data integrity.

flowchart TD
    subgraph Manage["Permission Management"]
        A["ResourcePermissionsComponent"]
        A --> B["Add User/Role Permission"]
        A --> C["Edit Permission Level"]
        A --> D["Remove Permission"]
    end
    subgraph View["Resource Browsing"]
        E["AvailableResourcesComponent"]
        E --> F["Filtered Resource Grid"]
    end
    subgraph Request["Access Request"]
        G["RequestResourceAccessComponent"]
        G --> H["Submit Access Request"]
    end
    subgraph Engine["Permission Engine"]
        I["ResourcePermissionEngine"]
    end

    A --> I
    E --> I
    G --> I

    style Manage fill:#2d6a9f,stroke:#1a4971,color:#fff
    style View fill:#7c5295,stroke:#563a6b,color:#fff
    style Request fill:#2d8659,stroke:#1a5c3a,color:#fff
    style Engine fill:#b8762f,stroke:#8a5722,color:#fff
import { ResourcePermissionsModule } from '@memberjunction/ng-resource-permissions';
@NgModule({
imports: [ResourcePermissionsModule]
})
export class YourModule {}
<mj-resource-permissions
[ResourceTypeID]="reportResourceTypeID"
[ResourceRecordID]="reportID"
[ShowSaveButton]="true"
[AllowAddPermissions]="true"
[AllowEditPermissions]="true"
[AllowDeletePermissions]="true"
[PermissionLevels]="['View', 'Edit', 'Owner']">
</mj-resource-permissions>
<mj-available-resources
[User]="currentUser"
[ResourceTypeID]="dashboardResourceTypeID"
[ResourceExtraFilter]="'IsActive = 1'"
[SelectionMode]="'Multiple'"
(SelectionChanged)="onResourceSelectionChanged($event)">
</mj-available-resources>
<mj-request-resource-access
[ResourceType]="'Report'"
[ResourceName]="'Sales Dashboard'"
[ResourceRecordID]="reportID"
[PermissionLevel]="'View'"
(AccessRequested)="onAccessRequested($event)">
</mj-request-resource-access>
ComponentSelectorPurpose
ResourcePermissionsComponentmj-resource-permissionsManage user/role permissions for a resource
AvailableResourcesComponentmj-available-resourcesDisplay resources available to a user
RequestResourceAccessComponentmj-request-resource-accessRequest access to a restricted resource
PropertyTypeDefaultDescription
ResourceTypeIDstringID of the resource type (required)
ResourceRecordIDstringID of the resource record (required)
ShowSaveButtonbooleanfalseShow built-in Save button
ShowPermissionLevelsbooleantrueShow permission level options
AllowAddPermissionsbooleantrueAllow adding permissions
AllowEditPermissionsbooleantrueAllow editing permissions
AllowDeletePermissionsbooleantrueAllow deleting permissions
PermissionLevelsstring[]['View', 'Edit', 'Owner']Available permission levels
PermissionTypesstring[]['User', 'Role']Available permission types
MethodReturnsDescription
SavePermissions()Promise<boolean>Save all pending permission changes
UpdateResourceRecordID(id)voidChange the resource record ID
  1. Grant access: Add a user or role permission with a specific level (View, Edit, Owner)
  2. Edit access: Change an existing permission level
  3. Revoke access: Remove a permission entry
  4. Request access: Users without permission can submit a request (created with Status = 'Requested')
  5. Approve/deny: Resource owner reviews and approves or denies the request