diff --git a/amber/src/main/scala/org/apache/texera/web/resource/dashboard/user/workflow/WorkflowResource.scala b/amber/src/main/scala/org/apache/texera/web/resource/dashboard/user/workflow/WorkflowResource.scala index 45ed49a23dc..5cbb5bbdd8f 100644 --- a/amber/src/main/scala/org/apache/texera/web/resource/dashboard/user/workflow/WorkflowResource.scala +++ b/amber/src/main/scala/org/apache/texera/web/resource/dashboard/user/workflow/WorkflowResource.scala @@ -431,7 +431,14 @@ class WorkflowResource extends LazyLogging { workflowDao.update(workflow) } else { if (!WorkflowAccessResource.hasReadAccess(workflow.getWid, user.getUid)) { - // not owner and no access record --> new record + // Check if this workflow exists in the database + val workflowExistsInDb = + workflow.getWid != null && workflowDao.existsById(workflow.getWid) + if (workflowExistsInDb) { + // User trying to persist an existing workflow without access - reject + throw new ForbiddenException("No sufficient access privilege.") + } + // This is a new workflow being created (wid is null or doesn't exist in DB) workflow.setWid(null) insertWorkflow(workflow, user) WorkflowVersionResource.insertVersion(workflow, insertingNewWorkflow = true) diff --git a/frontend/src/app/dashboard/component/user/share-access/share-access.component.html b/frontend/src/app/dashboard/component/user/share-access/share-access.component.html index f181ef839d5..717c1cbc188 100644 --- a/frontend/src/app/dashboard/component/user/share-access/share-access.component.html +++ b/frontend/src/app/dashboard/component/user/share-access/share-access.component.html @@ -154,7 +154,7 @@ {{ entry.privilege }} {{ entry.email }} ({{ entry.name }})