mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 18:12:04 +00:00
refactor: Workflow sharing bug bash fixes (#4888)
* fix: Prevent workflows with only manual trigger from being activated * fix: Fix workflow id when sharing from workflows list * fix: Update sharing modal translations * fix: Allow sharees to disable workflows and fix issue with unique key when removing a user * refactor: Improve error messages and change logging level to be less verbose * fix: Broken user removal transfer issue * feat: Implement workflow sharing BE telemetry * chore: temporarily add sharing env vars * feat: Implement BE telemetry for workflow sharing * fix: Prevent issues with possibly missing workflow id * feat: Replace WorkflowSharing flag references (no-changelog) (#4918) * ci: Block all external network calls in tests (no-changelog) (#4930) * setup nock to prevent tests from making any external requests * mock all calls to posthog sdk * feat: Replace WorkflowSharing flag references (no-changelog) Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <netroy@users.noreply.github.com> * refactor: Remove temporary feature flag for workflow sharing * refactor: add sharing_role to both manual and node executions * refactor: Allow changing name, position and disabled of read only nodes * feat: Overhaul dynamic translations for local and cloud (#4943) * feat: Overhaul dynamic translations for local and cloud * fix: remove type casting * chore: remove unused translations * fix: fix workflow sharing translation * test: Fix broken test * refactor: remove unnecessary import * refactor: Minor code improvements * refactor: rename dynamicTranslations to contextBasedTranslationKeys * fix: fix type imports * refactor: Consolidate sharing feature check * feat: update cred sharing unavailable translations * feat: update upgrade message when user management not available * fix: rename plan names to Pro and Power * feat: update translations to no longer contain plan names * wip: subworkflow permissions * feat: add workflowsFromSameOwner caller policy * feat: Fix subworkflow permissions * shared entites should check for role when deleting users * refactor: remove circular dependency * role filter shouldn't be an array * fixed role issue * fix: Corrected behavior when removing users * feat: show instance owner credential sharing message only if isnt sharee * feat: update workflow caller policy caller ids labels * feat: update upgrade plan links to contain instance ids * fix: show check errors below creds message only to owner * fix(editor): Hide usage page on cloud * fix: update credential validation error message for sharee * fix(core): Remove duplicate import * fix(editor): Extending deployment types * feat: Overhaul contextual translations (#4992) feat: update how contextual translations work * refactor: improve messageing for subworkflow permissions * test: Fix issue with user deletion and transfer * fix: Explicitly throw error message so it can be displayed in UI Co-authored-by: Alex Grozav <alex@grozav.com> Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <netroy@users.noreply.github.com> Co-authored-by: freyamade <freya@n8n.io> Co-authored-by: Csaba Tuncsik <csaba@n8n.io>
This commit is contained in:
@@ -42,7 +42,7 @@
|
||||
</n8n-select>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div v-if="isWorkflowSharingEnabled">
|
||||
<div v-if="isSharingEnabled">
|
||||
<el-row>
|
||||
<el-col :span="10" class="setting-name">
|
||||
{{ $locale.baseText('workflowSettings.callerPolicy') + ':' }}
|
||||
@@ -84,6 +84,7 @@
|
||||
</el-col>
|
||||
<el-col :span="14">
|
||||
<n8n-input
|
||||
:placeholder="$locale.baseText('workflowSettings.callerIds.placeholder')"
|
||||
type="text"
|
||||
size="medium"
|
||||
v-model="workflowSettings.callerIds"
|
||||
@@ -331,7 +332,9 @@ import { genericHelpers } from '@/mixins/genericHelpers';
|
||||
import { showMessage } from '@/mixins/showMessage';
|
||||
import {
|
||||
ITimeoutHMS,
|
||||
IUser,
|
||||
IWorkflowDataUpdate,
|
||||
IWorkflowDb,
|
||||
IWorkflowSettings,
|
||||
IWorkflowShortResponse,
|
||||
WorkflowCallerPolicyDefaultOption,
|
||||
@@ -350,6 +353,8 @@ import { mapStores } from 'pinia';
|
||||
import { useWorkflowsStore } from '@/stores/workflows';
|
||||
import { useSettingsStore } from '@/stores/settings';
|
||||
import { useRootStore } from '@/stores/n8nRootStore';
|
||||
import useWorkflowsEEStore from '@/stores/workflows.ee';
|
||||
import { useUsersStore } from '@/stores/users';
|
||||
|
||||
export default mixins(externalHooks, genericHelpers, restApi, showMessage).extend({
|
||||
name: 'WorkflowSettings',
|
||||
@@ -389,7 +394,7 @@ export default mixins(externalHooks, genericHelpers, restApi, showMessage).exten
|
||||
saveDataSuccessExecution: 'all',
|
||||
saveExecutionProgress: false,
|
||||
saveManualExecutions: false,
|
||||
workflowCallerPolicy: '',
|
||||
workflowCallerPolicy: 'workflowsFromSameOwner',
|
||||
},
|
||||
workflowCallerPolicyOptions: [] as Array<{ key: string; value: string }>,
|
||||
saveDataErrorExecutionOptions: [] as Array<{ key: string; value: string }>,
|
||||
@@ -408,17 +413,34 @@ export default mixins(externalHooks, genericHelpers, restApi, showMessage).exten
|
||||
},
|
||||
|
||||
computed: {
|
||||
...mapStores(useRootStore, useSettingsStore, useWorkflowsStore),
|
||||
...mapStores(
|
||||
useRootStore,
|
||||
useUsersStore,
|
||||
useSettingsStore,
|
||||
useWorkflowsStore,
|
||||
useWorkflowsEEStore,
|
||||
),
|
||||
workflowName(): string {
|
||||
return this.workflowsStore.workflowName;
|
||||
},
|
||||
workflowId(): string {
|
||||
return this.workflowsStore.workflowId;
|
||||
},
|
||||
isWorkflowSharingEnabled(): boolean {
|
||||
return this.settingsStore.isEnterpriseFeatureEnabled(
|
||||
EnterpriseEditionFeature.WorkflowSharing,
|
||||
workflow(): IWorkflowDb {
|
||||
return this.workflowsStore.workflow;
|
||||
},
|
||||
currentUser(): IUser | null {
|
||||
return this.usersStore.currentUser;
|
||||
},
|
||||
isSharingEnabled(): boolean {
|
||||
return this.settingsStore.isEnterpriseFeatureEnabled(EnterpriseEditionFeature.Sharing);
|
||||
},
|
||||
workflowOwnerName(): string {
|
||||
const fallback = this.$locale.baseText(
|
||||
'workflowSettings.callerPolicy.options.workflowsFromSameOwner.fallback',
|
||||
);
|
||||
|
||||
return this.workflowsEEStore.getWorkflowOwnerName(`${this.workflowId}`, fallback);
|
||||
},
|
||||
},
|
||||
async mounted() {
|
||||
@@ -518,19 +540,36 @@ export default mixins(externalHooks, genericHelpers, restApi, showMessage).exten
|
||||
};
|
||||
},
|
||||
async loadWorkflowCallerPolicyOptions() {
|
||||
const currentUserIsOwner = this.workflow.ownedBy?.id === this.currentUser?.id;
|
||||
|
||||
this.workflowCallerPolicyOptions = [
|
||||
{
|
||||
key: 'any',
|
||||
value: this.$locale.baseText('workflowSettings.callerPolicy.options.any'),
|
||||
},
|
||||
{
|
||||
key: 'none',
|
||||
value: this.$locale.baseText('workflowSettings.callerPolicy.options.none'),
|
||||
},
|
||||
{
|
||||
key: 'workflowsFromSameOwner',
|
||||
value: this.$locale.baseText(
|
||||
'workflowSettings.callerPolicy.options.workflowsFromSameOwner',
|
||||
{
|
||||
interpolate: {
|
||||
owner: currentUserIsOwner
|
||||
? this.$locale.baseText(
|
||||
'workflowSettings.callerPolicy.options.workflowsFromSameOwner.owner',
|
||||
)
|
||||
: this.workflowOwnerName,
|
||||
},
|
||||
},
|
||||
),
|
||||
},
|
||||
{
|
||||
key: 'workflowsFromAList',
|
||||
value: this.$locale.baseText('workflowSettings.callerPolicy.options.workflowsFromAList'),
|
||||
},
|
||||
{
|
||||
key: 'any',
|
||||
value: this.$locale.baseText('workflowSettings.callerPolicy.options.any'),
|
||||
},
|
||||
];
|
||||
},
|
||||
async loadSaveDataErrorExecutionOptions() {
|
||||
|
||||
Reference in New Issue
Block a user