Skip to content

Commit dff8f7a

Browse files
authored
fix(editor): Issue showing Auth2 callback section when all properties are overriden (#8999)
1 parent bc6575a commit dff8f7a

File tree

3 files changed

+51
-2
lines changed

3 files changed

+51
-2
lines changed

cypress/e2e/2-credentials.cy.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,4 +236,29 @@ describe('Credentials', () => {
236236
.find('input')
237237
.should('have.value', NEW_QUERY_AUTH_ACCOUNT_NAME);
238238
});
239+
240+
it('should not show OAuth redirect URL section when OAuth2 credentials are overridden', () => {
241+
cy.intercept('/types/credentials.json', { middleware: true }, (req) => {
242+
req.headers['cache-control'] = 'no-cache, no-store';
243+
244+
req.on('response', (res) => {
245+
const credentials = res.body || [];
246+
247+
const index = credentials.findIndex((c) => c.name === 'slackOAuth2Api');
248+
249+
credentials[index] = {
250+
...credentials[index],
251+
__overwrittenProperties: ['clientId', 'clientSecret'],
252+
};
253+
});
254+
});
255+
256+
workflowPage.actions.visit(true);
257+
workflowPage.actions.addNodeToCanvas('Slack');
258+
workflowPage.actions.openNode('Slack');
259+
workflowPage.getters.nodeCredentialsSelect().click();
260+
getVisibleSelect().find('li').last().click();
261+
credentialsModal.getters.credentialAuthTypeRadioButtons().first().click();
262+
nodeDetailsView.getters.copyInput().should('not.exist');
263+
});
239264
});

packages/editor-ui/src/components/CredentialEdit/CredentialConfig.vue

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@
7878
/>
7979

8080
<CopyInput
81-
v-if="isOAuthType && credentialProperties.length"
81+
v-if="isOAuthType && !allOAuth2BasePropertiesOverridden"
8282
:label="$locale.baseText('credentialEdit.credentialConfig.oAuthRedirectUrl')"
8383
:value="oAuthCallbackUrl"
8484
:copy-button-text="$locale.baseText('credentialEdit.credentialConfig.clickToCopy')"
@@ -204,6 +204,9 @@ export default defineComponent({
204204
isOAuthType: {
205205
type: Boolean,
206206
},
207+
allOAuth2BasePropertiesOverridden: {
208+
type: Boolean,
209+
},
207210
isOAuthConnected: {
208211
type: Boolean,
209212
},

packages/editor-ui/src/components/CredentialEdit/CredentialEdit.vue

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
:parent-types="parentTypes"
7676
:required-properties-filled="requiredPropertiesFilled"
7777
:credential-permissions="credentialPermissions"
78+
:all-o-auth2-base-properties-overridden="allOAuth2BasePropertiesOverridden"
7879
:mode="mode"
7980
:selected-credential="selectedCredential"
8081
:show-auth-type-selector="requiredCredentials"
@@ -427,6 +428,15 @@ export default defineComponent({
427428
this.parentTypes.includes('oAuth1Api'))
428429
);
429430
},
431+
allOAuth2BasePropertiesOverridden() {
432+
if (this.credentialType?.__overwrittenProperties) {
433+
return (
434+
this.credentialType.__overwrittenProperties.includes('clientId') &&
435+
this.credentialType.__overwrittenProperties.includes('clientSecret')
436+
);
437+
}
438+
return false;
439+
},
430440
isOAuthConnected(): boolean {
431441
return this.isOAuthType && !!this.credentialData.oauthTokenData;
432442
},
@@ -435,7 +445,7 @@ export default defineComponent({
435445
return [];
436446
}
437447
438-
return this.credentialType.properties.filter((propertyData: INodeProperties) => {
448+
const properties = this.credentialType.properties.filter((propertyData: INodeProperties) => {
439449
if (!this.displayCredentialParameter(propertyData)) {
440450
return false;
441451
}
@@ -444,6 +454,17 @@ export default defineComponent({
444454
!this.credentialType!.__overwrittenProperties.includes(propertyData.name)
445455
);
446456
});
457+
458+
/**
459+
* If after all credentials overrides are applied only "notice"
460+
* properties are left, do not return them. This will avoid
461+
* showing notices that refer to a property that was overridden.
462+
*/
463+
if (properties.every((p) => p.type === 'notice')) {
464+
return [];
465+
}
466+
467+
return properties;
447468
},
448469
requiredPropertiesFilled(): boolean {
449470
for (const property of this.credentialProperties) {

0 commit comments

Comments
 (0)