From b87826415d8f7ff2542c316866689b43dda4d9da Mon Sep 17 00:00:00 2001 From: Elsio Sanchez <45974454+elsiosanchez@users.noreply.github.com> Date: Wed, 10 Mar 2021 11:29:57 -0400 Subject: [PATCH] Bugfix/validate private access (#655) * fix private acces * Fixes: # 156 Fix Private Access Co-authored-by: Elsio Sanchez --- .../ADempiere/ContextMenu/contextMenuMixin.js | 48 ++++++++++++++----- src/store/modules/ADempiere/data/actions.js | 7 ++- 2 files changed, 40 insertions(+), 15 deletions(-) diff --git a/src/components/ADempiere/ContextMenu/contextMenuMixin.js b/src/components/ADempiere/ContextMenu/contextMenuMixin.js index 538318f0..492e7d9a 100644 --- a/src/components/ADempiere/ContextMenu/contextMenuMixin.js +++ b/src/components/ADempiere/ContextMenu/contextMenuMixin.js @@ -196,6 +196,24 @@ export default { deleteRecord2: ['ctrl', 'd'], refreshData: ['f5'] } + }, + getCurrentRecord() { + const record = this.getAllDataRecords.record.find(fieldItem => { + if (this.recordUuid === fieldItem.UUID) { + return fieldItem + } + }) + if (!this.isEmptyValue(record)) { + return record + } + return {} + }, + tableNameCurrentTab() { + const current = this.$store.getters.getWindow(this.getterContextMenu.actions[0].uuidParent).tabs[0] + if (!this.isEmptyValue(current)) { + return current.tableName + } + return '' } }, watch: { @@ -354,17 +372,14 @@ export default { let isChangePrivateAccess = true if (this.isReferecesContent) { isChangePrivateAccess = false - if (!this.isEmptyValue(this.$route.params.tableName)) { + if (!this.isEmptyValue(this.$route.params.tableName) || (!this.isEmptyValue(this.getCurrentRecord) && !this.isEmptyValue(this.tableNameCurrentTab))) { this.$store.dispatch('getPrivateAccessFromServer', { tableName: this.$route.params.tableName, - recordId: this.$route.params.recordId + recordId: this.getCurrentRecord[this.tableNameCurrentTab + '_ID'], + recordUuid: this.$route.query.action }) .then(privateAccessResponse => { - if (!this.isEmptyValue(privateAccessResponse)) { - this.$nextTick(() => { - this.validatePrivateAccess(privateAccessResponse) - }) - } + this.validatePrivateAccess(privateAccessResponse) }) } @@ -463,14 +478,26 @@ export default { recordUuid: this.recordUuid, panelType: this.panelType, isNewRecord: action.action === 'setDefaultValues', - tableName: action.tableName, - recordId: action.recordId + tableName: this.$route.params.tableName, + recordId: this.getCurrentRecord[this.tableNameCurrentTab + '_ID'] }) .then(response => { + this.$message({ + type: 'success', + message: this.$t('data.lockRecord'), + showClose: true + }) if (response && response.isPrivateAccess) { this.validatePrivateAccess(response) } }) + .catch(error => { + this.$message({ + type: 'error', + message: this.$t('notifications.error') + error.message, + showClose: true + }) + }) } } else if (action.type === 'updateReport') { this.updateReport(action) @@ -679,12 +706,11 @@ export default { }, () => {}) }, validatePrivateAccess({ isLocked, tableName, recordId }) { - if (this.isPersonalLock) { + if (!this.isPersonalLock) { let isHiddenLock = false if (isLocked) { isHiddenLock = true } - this.actions = this.actions.map(actionItem => { if (actionItem.action === 'lockRecord') { return { diff --git a/src/store/modules/ADempiere/data/actions.js b/src/store/modules/ADempiere/data/actions.js index aebf70ab..603cac4c 100644 --- a/src/store/modules/ADempiere/data/actions.js +++ b/src/store/modules/ADempiere/data/actions.js @@ -764,8 +764,7 @@ const actions = { }) .then(privateAccessResponse => { // TODO: Evaluate uuid record - if (isEmptyValue(privateAccessResponse.recordId) || - privateAccessResponse.recordId !== recordId) { + if (!isEmptyValue(privateAccessResponse.tableName)) { return { isLocked: false, tableName, @@ -810,7 +809,7 @@ const actions = { .catch(error => { showMessage({ title: language.t('notifications.error'), - message: language.t('login.unexpectedError'), + message: language.t('login.unexpectedError') + error.message, type: 'error' }) console.warn(`Error lock private access: ${error.message}. Code: ${error.code}.`) @@ -844,7 +843,7 @@ const actions = { .catch(error => { showMessage({ title: language.t('notifications.error'), - message: language.t('login.unexpectedError'), + message: language.t('login.unexpectedError') + error.message, type: 'error' }) console.warn(`Error unlock private access: ${error.message}. Code: ${error.code}.`)