feat: Add workflow sharing functionality and permissions (#4370)

* feat(editor): extract credentials view into reusable layout components for workflows view

* feat(editor): add workflow card and start work on empty state

* feat: add hoverable card and finish workflows empty state

* fix: undo workflows response interface changes

* chore: fix linting issues.

* fix: remove enterprise sharing env schema

* fix(editor): fix workflows resource view when sharing is enabled

* fix: change owner tag design and order

* feat: add personalization survey on workflows page

* fix: update component snapshots

* feat: refactored workflow card to use workflow-activator properly

* fix: fix workflow activator and proptypes

* fix: hide owner tag for workflow card until sharing is available

* fix: fixed ownedBy and sharedWith appearing for workflows list

* feat: update tags component design

* refactor: change resource filter select to n8n-user-select

* fix: made telemetry messages reusable

* chore: remove unused import

* refactor: fix component name casing

* refactor: use Vue.set to make workflow property reactive

* feat: add support for clicking on tags for filtering

* chore: fix tags linting issues

* fix: fix resources list layout when title words are very long

* refactor: add active and inactive status text to workflow activator

* fix: fix credentials and workflows sorting when name contains leading whitespace

* fix: remove wrongfully added style tag

* feat: add translations and storybook examples for truncated tags

* fix: remove enterprise sharing env from schema

* refactor: fix workflows module and workflows field store naming conflict

* feat: add workflow share button and open dummy modal

* feat: add workflow sharing modal (in progress)

* feat: add message when sharing disabled

* feat: add sharing messages based on flags

* feat: add workflow sharing api integration and readonly state handling

* fix: change how foreign credentials are handled

* refactor: migrate newly added workflow sharing store methods to pinia

* fix: update foreign credentials handler and add executable prop to node-settings

* fix: fix credentials display issue caused by addCredentials override

* fix: fix various issues when sharing from empty state

* fix: update node duplication credentials

* fix: revert defautl values for sharing env

* feat: hide share button behind feature flag

* chore: add env variable for sharing feature (testing only)

* fix: change enterprise-edition component casing
This commit is contained in:
Alex Grozav
2022-11-15 14:25:04 +02:00
committed by GitHub
parent d1ffc58aa4
commit 898c25fd7e
27 changed files with 567 additions and 97 deletions

View File

@@ -37,6 +37,7 @@ import {
NodeParameterValueType,
} from 'n8n-workflow';
import { FAKE_DOOR_FEATURES } from './constants';
import {ICredentialsDb} from "n8n";
export * from 'n8n-design-system/src/types';
@@ -320,6 +321,7 @@ export interface IWorkflowDb {
sharedWith?: Array<Partial<IUser>>;
ownedBy?: Partial<IUser>;
hash: string;
usedCredentials?: Array<Partial<ICredentialsDb>>;
}
// Identical to cli.Interfaces.ts
@@ -332,6 +334,14 @@ export interface IWorkflowShortResponse {
tags: ITag[];
}
export interface IWorkflowsShareResponse {
id: string;
createdAt: number | string;
updatedAt: number | string;
sharedWith?: Array<Partial<IUser>>;
ownedBy?: Partial<IUser>;
}
// Identical or almost identical to cli.Interfaces.ts
@@ -346,12 +356,17 @@ export interface IShareCredentialsPayload {
shareWithIds: string[];
}
export interface IShareWorkflowsPayload {
shareWithIds: string[];
}
export interface ICredentialsResponse extends ICredentialsEncrypted {
id: string;
createdAt: number | string;
updatedAt: number | string;
sharedWith?: Array<Partial<IUser>>;
ownedBy?: Partial<IUser>;
currentUserHasAccess?: boolean;
}
export interface ICredentialsBase {
@@ -987,7 +1002,6 @@ export interface ICredentialMap {
export interface ICredentialsState {
credentialTypes: ICredentialTypeMap;
credentials: ICredentialMap;
foreignCredentials?: ICredentialMap;
}
export interface ITagsState {
@@ -1112,7 +1126,7 @@ export type IFakeDoor = {
uiLocations: IFakeDoorLocation[],
};
export type IFakeDoorLocation = 'settings' | 'credentialsModal';
export type IFakeDoorLocation = 'settings' | 'credentialsModal' | 'workflowShareModal';
export type INodeFilterType = "Regular" | "Trigger" | "All";