From 71990be3ed9987d4e4115332b6aac4035320d002 Mon Sep 17 00:00:00 2001 From: Eleazar Resendez Date: Wed, 1 Apr 2026 16:32:19 -0600 Subject: [PATCH] Fix self-service lock after interstitial redirect --- src/components/task.vue | 20 +++- tests/unit/TaskSelfServiceLock.spec.js | 153 +++++++++++++++++++++++++ 2 files changed, 167 insertions(+), 6 deletions(-) create mode 100644 tests/unit/TaskSelfServiceLock.spec.js diff --git a/src/components/task.vue b/src/components/task.vue index 4061ba38..83915b57 100644 --- a/src/components/task.vue +++ b/src/components/task.vue @@ -293,6 +293,7 @@ export default { .getTasks(url) .then((response) => { this.task = response.data; + this.setSelfService(this.task); this.linkTask(mounting); this.checkTaskStatus(); if ( @@ -391,6 +392,7 @@ export default { } }, checkTaskStatus() { + this.setSelfService(this.task); if ( this.task.status == 'COMPLETED' || this.task.status == 'CLOSED' || @@ -402,13 +404,19 @@ export default { } this.prepareTask(); }, - setSelfService() { + resolveSelfService(task = this.task) { + if (task) { + return ( + _.get(task, 'process_request.status') === 'ACTIVE' + && Boolean(_.get(task, 'is_self_service', false)) + ); + } + + return Boolean(_.get(window, 'ProcessMaker.isSelfService', false)); + }, + setSelfService(task = this.task) { this.$nextTick(() => { - if (window.ProcessMaker.isSelfService) { - this.isSelfService = true; - } else { - this.isSelfService = false; - } + this.isSelfService = this.resolveSelfService(task); }); }, /** diff --git a/tests/unit/TaskSelfServiceLock.spec.js b/tests/unit/TaskSelfServiceLock.spec.js new file mode 100644 index 00000000..257a7f8a --- /dev/null +++ b/tests/unit/TaskSelfServiceLock.spec.js @@ -0,0 +1,153 @@ +const fs = require('fs'); +const path = require('path'); +const vm = require('vm'); + +const componentPath = path.join( + process.cwd(), + 'src/components/task.vue', +); + +const source = fs.readFileSync(componentPath, 'utf8'); + +function getComponentOptions() { + const scriptMatch = source.match(/