diff --git a/cypress/e2e/17-sharing.cy.ts b/cypress/e2e/17-sharing.cy.ts index 15c63eb6c2..b4708b29a2 100644 --- a/cypress/e2e/17-sharing.cy.ts +++ b/cypress/e2e/17-sharing.cy.ts @@ -135,7 +135,11 @@ describe('Sharing', { disableAutoLogin: true }, () => { workflowsPage.getters.workflowCards().should('have.length', 2); workflowsPage.getters.workflowCard('Workflow W1').click(); workflowPage.actions.openNode('Notion'); - ndv.getters.credentialInput().should('have.value', 'Credential C1').should('be.disabled'); + ndv.getters + .credentialInput() + .find('input') + .should('have.value', 'Credential C1') + .should('be.enabled'); ndv.actions.close(); cy.waitForLoad(); diff --git a/packages/cli/src/credentials/credentials.service.ts b/packages/cli/src/credentials/credentials.service.ts index 3215390f81..f16a2eb70d 100644 --- a/packages/cli/src/credentials/credentials.service.ts +++ b/packages/cli/src/credentials/credentials.service.ts @@ -63,11 +63,10 @@ export class CredentialsService { user: User, options: { listQueryOptions?: ListQuery.Options; - onlyOwn?: boolean; includeScopes?: string; } = {}, ) { - const returnAll = user.hasGlobalScope('credential:list') && !options.onlyOwn; + const returnAll = user.hasGlobalScope('credential:list'); const isDefaultSelect = !options.listQueryOptions?.select; let projectRelations: ProjectRelation[] | undefined = undefined; diff --git a/packages/cli/src/workflows/workflow.service.ee.ts b/packages/cli/src/workflows/workflow.service.ee.ts index c7fd0e561e..31029464f6 100644 --- a/packages/cli/src/workflows/workflow.service.ee.ts +++ b/packages/cli/src/workflows/workflow.service.ee.ts @@ -80,7 +80,10 @@ export class EnterpriseWorkflowService { currentUser: User, ): Promise { workflow.usedCredentials = []; - const userCredentials = await this.credentialsService.getMany(currentUser, { onlyOwn: true }); + const userCredentials = await this.credentialsService.getCredentialsAUserCanUseInAWorkflow( + currentUser, + { workflowId: workflow.id }, + ); const credentialIdsUsedByWorkflow = new Set(); workflow.nodes.forEach((node) => { if (!node.credentials) { diff --git a/packages/cli/test/integration/workflows/workflows.controller.ee.test.ts b/packages/cli/test/integration/workflows/workflows.controller.ee.test.ts index 8b1f0d5f89..e18dbd2fb5 100644 --- a/packages/cli/test/integration/workflows/workflows.controller.ee.test.ts +++ b/packages/cli/test/integration/workflows/workflows.controller.ee.test.ts @@ -428,28 +428,38 @@ describe('GET /workflows/:workflowId', () => { expect(responseWorkflow.sharedWithProjects).toHaveLength(0); }); - test('should return workflow with credentials saying owner does not have access when not shared', async () => { - const savedCredential = await saveCredential(randomCredentialPayload(), { user: member }); + test.each([ + ['owner', () => owner], + ['admin', () => admin], + ])( + 'should return workflow with credentials saying %s does have access even when not shared', + async (_description, getActor) => { + const actor = getActor(); + const savedCredential = await saveCredential(randomCredentialPayload(), { user: member }); - const workflowPayload = makeWorkflow({ - withPinData: false, - withCredential: { id: savedCredential.id, name: savedCredential.name }, - }); - const workflow = await createWorkflow(workflowPayload, owner); + const workflowPayload = makeWorkflow({ + withPinData: false, + withCredential: { id: savedCredential.id, name: savedCredential.name }, + }); + const workflow = await createWorkflow(workflowPayload, actor); - const response = await authOwnerAgent.get(`/workflows/${workflow.id}`).expect(200); - const responseWorkflow: WorkflowWithSharingsMetaDataAndCredentials = response.body.data; + const response = await testServer + .authAgentFor(actor) + .get(`/workflows/${workflow.id}`) + .expect(200); + const responseWorkflow: WorkflowWithSharingsMetaDataAndCredentials = response.body.data; - expect(responseWorkflow.usedCredentials).toMatchObject([ - { - id: savedCredential.id, - name: savedCredential.name, - currentUserHasAccess: false, // although owner can see, they do not have access - }, - ]); + expect(responseWorkflow.usedCredentials).toMatchObject([ + { + id: savedCredential.id, + name: savedCredential.name, + currentUserHasAccess: true, + }, + ]); - expect(responseWorkflow.sharedWithProjects).toHaveLength(0); - }); + expect(responseWorkflow.sharedWithProjects).toHaveLength(0); + }, + ); test('should return workflow with credentials for all users with or without access', async () => { const savedCredential = await saveCredential(randomCredentialPayload(), { user: member });