UNPKG

q42-cms-components

Version:

Front-end package that provides a UI on top of the QMS back-end

56 lines (46 loc) 1.68 kB
import { ServerStore } from './server-store.js'; import { PERMISSIONS } from '../constants.js'; class PermissionStore extends ServerStore { constructor() { super({ initial: { userPermissions: [], }, loaders: { userPermissions: () => this.fetch('/authorization/permissions'), } }); } findPermission(itemName) { const itemEntityName = itemName.toLowerCase(); return this.userPermissions.find(permissionItem => permissionItem.cmsItemName.split('.').pop().toLowerCase() === itemEntityName ); } hasPermission(itemName, permission) { const permissionEntry = this.findPermission(itemName); return !!(permissionEntry && permissionEntry.permission >= permission); } getPermissions(itemName) { const permissionEntry = this.findPermission(itemName); return { canRead: !!(permissionEntry && permissionEntry.permission >= PERMISSIONS.READ), canUpdate: !!(permissionEntry && permissionEntry.permission >= PERMISSIONS.UPDATE), canCreate: !!(permissionEntry && permissionEntry.permission >= PERMISSIONS.CREATE), canDelete: !!(permissionEntry && permissionEntry.permission >= PERMISSIONS.DELETE), } } canRead(itemName) { return this.hasPermission(itemName, PERMISSIONS.READ); } canUpdate(itemName) { return this.hasPermission(itemName, PERMISSIONS.UPDATE); } canCreate(itemName) { return this.hasPermission(itemName, PERMISSIONS.CREATE); } canDelete(itemName) { return this.hasPermission(itemName, PERMISSIONS.DELETE); } } export const permissionStore = new PermissionStore();