armor-editor
Version:
Advanced rich text editor with premium armor-grade security, real-time collaboration, spell checking, track changes, and framework-agnostic design for React, Vue, Angular, Next.js, Nuxt.js
49 lines (48 loc) • 1.59 kB
TypeScript
export interface User {
id: string;
name: string;
email: string;
role: UserRole;
avatar?: string;
}
export interface UserRole {
id: string;
name: string;
permissions: Permission[];
}
export interface Permission {
action: PermissionAction;
resource: PermissionResource;
conditions?: PermissionCondition[];
}
export type PermissionAction = 'read' | 'write' | 'delete' | 'share' | 'export' | 'comment' | 'suggest' | 'approve' | 'admin';
export type PermissionResource = 'document' | 'comments' | 'suggestions' | 'settings' | 'users' | 'analytics' | 'templates';
export interface PermissionCondition {
field: string;
operator: 'equals' | 'contains' | 'startsWith' | 'endsWith';
value: any;
}
export declare class PermissionsSystem {
private currentUser;
private documentPermissions;
private roles;
private editor;
constructor(editor: any);
private initializeDefaultRoles;
setCurrentUser(user: User): void;
hasPermission(action: PermissionAction, resource: PermissionResource): boolean;
canEdit(): boolean;
canComment(): boolean;
canShare(): boolean;
canExport(): boolean;
canDelete(): boolean;
private applyPermissions;
private updateToolbarVisibility;
private applyContentRestrictions;
shareDocument(userEmail: string, roleId: string): Promise<boolean>;
revokeAccess(userId: string): Promise<boolean>;
getAvailableRoles(): UserRole[];
createCustomRole(role: UserRole): void;
logAction(action: string, details?: any): void;
getAuditLogs(): any[];
}