From 5799bf2d62d9c702f0f48fd7f90a0828ef7f367f Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Fri, 12 Aug 2022 23:44:47 +1200 Subject: [PATCH] Transform delete key on input as well as output --- public/scripts/permissions-matrix.js | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/public/scripts/permissions-matrix.js b/public/scripts/permissions-matrix.js index 94ee82cace..52a903fdb6 100644 --- a/public/scripts/permissions-matrix.js +++ b/public/scripts/permissions-matrix.js @@ -8,6 +8,8 @@ permissions.map(p => { let { type, role } = this.parsePermission(p); + type = this.parseInputPermission(type); + let index = -1; let existing = this.permissions.find((p, idx) => { if (p.role === role) { @@ -27,12 +29,6 @@ } }); }, - parsePermission(permission) { - let parts = permission.split('('); - let type = parts[0]; - let role = parts[1].replace(')', '').replace(' ', ''); - return { type, role }; - }, addPermission(role, read, create, update, xdelete) { if (!document.getElementById('role').reportValidity()) return; if (read) this.rawPermissions.push(`read(${role})`); @@ -59,7 +55,7 @@ if (key === 'role') { continue; } - const parsedKey = this.parseKey(key); + const parsedKey = this.parseOutputPermission(key); if (permission[key]) { if (!this.rawPermissions.includes(`${parsedKey}(${permission.role})`)) { this.rawPermissions.push(`${parsedKey}(${permission.role})`); @@ -78,7 +74,21 @@ this.rawPermissions = this.rawPermissions.filter(p => !p.includes(row[0].role)); } }, - parseKey(key) { + parsePermission(permission) { + let parts = permission.split('('); + let type = parts[0]; + let role = parts[1].replace(')', '').replace(' ', ''); + return { type, role }; + }, + parseInputPermission(key) { + // Can't bind to a property named delete + if (key === 'delete') { + return 'xdelete'; + } + return key; + }, + parseOutputPermission(key) { + // Can't bind to a property named delete if (key === 'xdelete') { return 'delete'; }