From ca2f9bed3c4b0718385ac434ce3194769198585c Mon Sep 17 00:00:00 2001 From: Elsio Sanchez <45974454+elsiosanchez@users.noreply.github.com> Date: Tue, 23 Mar 2021 12:16:20 -0400 Subject: [PATCH] Support Private Access (#671) * #667 Support Private Access * fix bottons * change lang * rename service * rename service --- src/api/ADempiere/private-access.js | 50 ++++ .../ADempiere/ContextMenu/contextMenuMixin.js | 41 ++- src/components/ADempiere/Dialog/index.vue | 24 +- .../ADempiere/recordAccess/index.vue | 261 ++++++++++++++++++ src/lang/ADempiere/en.js | 7 + src/lang/ADempiere/es.js | 7 + src/store/modules/ADempiere/accessRecord.js | 38 +++ 7 files changed, 413 insertions(+), 15 deletions(-) create mode 100644 src/components/ADempiere/recordAccess/index.vue create mode 100644 src/store/modules/ADempiere/accessRecord.js diff --git a/src/api/ADempiere/private-access.js b/src/api/ADempiere/private-access.js index c5705d15..4ff4206e 100644 --- a/src/api/ADempiere/private-access.js +++ b/src/api/ADempiere/private-access.js @@ -64,3 +64,53 @@ export function requestUnlockPrivateAccess({ return convertPrivateAccess(responsePrivateAccess) }) } + +/** + * List Rol Access Record + * @param {string} tableName + * @param {number} recordId + * @param {string} recordUuid + * @param {string} sessionUuid + */ +export function getAccessList({ + tableName, + recordId, + recordUuid, + sessionUuid +}) { + return requestRest({ + url: '/ui/update-access-record', + params: { + table_name: tableName, + id: recordId, + uuid: recordUuid, + token: sessionUuid + } + }) + .then(evaluateResponse) +} + +/** + * Update Access Record + * @param {string} tableName + * @param {number} recordId + * @param {string} recordUuid + * @param {array} listRol + */ +export function updateAccessRecord({ + tableName, + recordId, + recordUuid, + listRecord +}) { + return requestRest({ + url: '/ui/update-access-record', + params: { + table_name: tableName, + id: recordId, + uuid: recordUuid, + list_rol: listRecord + } + }) + .then(evaluateResponse) +} diff --git a/src/components/ADempiere/ContextMenu/contextMenuMixin.js b/src/components/ADempiere/ContextMenu/contextMenuMixin.js index b6acf5ac..c7886186 100644 --- a/src/components/ADempiere/ContextMenu/contextMenuMixin.js +++ b/src/components/ADempiere/ContextMenu/contextMenuMixin.js @@ -214,6 +214,20 @@ export default { return current.tableName } return '' + }, + isLockRecord() { + return this.$store.getters['user/getRole'].isPersonalLock + }, + recordAccess() { + return { + action: 'recordAccess', + disabled: false, + hidden: false, + isSortTab: true, + name: this.$t('data.recordAccess.actions'), + type: 'dataAction', + tableName: this.tableNameCurrentTab + } } }, watch: { @@ -377,14 +391,14 @@ export default { // TODO: Add store attribute to avoid making repeated requests let isChangePrivateAccess = true if (this.isReferecesContent) { - isChangePrivateAccess = false - if (!this.isEmptyValue(this.$route.params.tableName) || (!this.isEmptyValue(this.getCurrentRecord) && !this.isEmptyValue(this.tableNameCurrentTab))) { + if ((!this.isEmptyValue(this.getCurrentRecord) && !this.isEmptyValue(this.tableNameCurrentTab))) { this.$store.dispatch('getPrivateAccessFromServer', { - tableName: this.$route.params.tableName, + tableName: this.tableNameCurrentTab, recordId: this.getCurrentRecord[this.tableNameCurrentTab + '_ID'], recordUuid: this.$route.query.action }) .then(privateAccessResponse => { + isChangePrivateAccess = false this.validatePrivateAccess(privateAccessResponse) }) } @@ -397,6 +411,14 @@ export default { }) this.$store.dispatch('setOrder', processAction) } + if (this.panelType === 'window' && this.isEmptyValue(this.actions.find(element => element.action === 'recordAccess'))) { + this.$store.dispatch('addAttribute', { + tableName: this.tableNameCurrentTab, + recordId: this.getCurrentRecord[this.tableNameCurrentTab + '_ID'], + recordUuid: this.$route.query.action + }) + this.actions.push(this.recordAccess) + } if (this.actions && this.actions.length) { this.actions.forEach(itemAction => { @@ -413,11 +435,11 @@ export default { } if (this.$route.meta.type === 'window') { - if (isChangePrivateAccess) { + if (this.isLockRecord) { if (action === 'lockRecord') { - itemAction.hidden = false + itemAction.hidden = isChangePrivateAccess } else if (action === 'unlockRecord') { - itemAction.hidden = true + itemAction.hidden = !isChangePrivateAccess } } @@ -473,7 +495,12 @@ export default { ...this.getOldRouteOfWindow.query } }, () => {}) - } else { + } else if (action.action === 'recordAccess') { + this.$store.dispatch('setShowDialog', { + type: this.panelType, + action: action + }) + } else if (action.action !== 'undoModifyData') { if (action.action === 'setDefaultValues' && this.$route.query.action === 'create-new') { return } diff --git a/src/components/ADempiere/Dialog/index.vue b/src/components/ADempiere/Dialog/index.vue index aeeb8e1e..2ec4893b 100644 --- a/src/components/ADempiere/Dialog/index.vue +++ b/src/components/ADempiere/Dialog/index.vue @@ -13,6 +13,7 @@