From 0979a993091404c7ce79b344fce93d0d464bbe90 Mon Sep 17 00:00:00 2001 From: Dana <152518854+dana-gill@users.noreply.github.com> Date: Mon, 27 Jan 2025 16:42:45 +0100 Subject: [PATCH] chore(API): Follow up design for credential callback (#12798) Co-authored-by: Jonathan Bennetts --- {assets => packages/cli/assets}/n8n-logo.png | Bin packages/cli/src/abstract-server.ts | 4 -- .../oauth2-credential.controller.test.ts | 6 +- .../oauth/oauth2-credential.controller.ts | 2 +- .../cli/templates/oauth-callback.handlebars | 54 +++++++++++------- .../controllers/oauth/oauth2.api.test.ts | 2 +- packages/editor-ui/public/static/n8n-logo.png | Bin 0 -> 7901 bytes 7 files changed, 39 insertions(+), 29 deletions(-) rename {assets => packages/cli/assets}/n8n-logo.png (100%) create mode 100644 packages/editor-ui/public/static/n8n-logo.png diff --git a/assets/n8n-logo.png b/packages/cli/assets/n8n-logo.png similarity index 100% rename from assets/n8n-logo.png rename to packages/cli/assets/n8n-logo.png diff --git a/packages/cli/src/abstract-server.ts b/packages/cli/src/abstract-server.ts index 8a2ba38b4a..a9340b0a87 100644 --- a/packages/cli/src/abstract-server.ts +++ b/packages/cli/src/abstract-server.ts @@ -7,7 +7,6 @@ import { readFile } from 'fs/promises'; import type { Server } from 'http'; import isbot from 'isbot'; import { Logger } from 'n8n-core'; -import path from 'path'; import config from '@/config'; import { N8N_VERSION, TEMPLATES_DIR, inDevelopment, inTest } from '@/constants'; @@ -68,9 +67,6 @@ export abstract class AbstractServer { this.app.set('view engine', 'handlebars'); this.app.set('views', TEMPLATES_DIR); - const assetsPath: string = path.join(__dirname, '../../../assets'); - this.app.use(express.static(assetsPath)); - const proxyHops = config.getEnv('proxy_hops'); if (proxyHops > 0) this.app.set('trust proxy', proxyHops); diff --git a/packages/cli/src/controllers/oauth/__tests__/oauth2-credential.controller.test.ts b/packages/cli/src/controllers/oauth/__tests__/oauth2-credential.controller.test.ts index 5281378fe0..1984d12f59 100644 --- a/packages/cli/src/controllers/oauth/__tests__/oauth2-credential.controller.test.ts +++ b/packages/cli/src/controllers/oauth/__tests__/oauth2-credential.controller.test.ts @@ -255,7 +255,7 @@ describe('OAuth2CredentialController', () => { type: 'oAuth2Api', }), ); - expect(res.render).toHaveBeenCalledWith('oauth-callback', { imagePath: 'n8n-logo.png' }); + expect(res.render).toHaveBeenCalledWith('oauth-callback'); }); it('merges oauthTokenData if it already exists', async () => { @@ -297,7 +297,7 @@ describe('OAuth2CredentialController', () => { type: 'oAuth2Api', }), ); - expect(res.render).toHaveBeenCalledWith('oauth-callback', { imagePath: 'n8n-logo.png' }); + expect(res.render).toHaveBeenCalledWith('oauth-callback'); }); it('overwrites oauthTokenData if it is a string', async () => { @@ -335,7 +335,7 @@ describe('OAuth2CredentialController', () => { type: 'oAuth2Api', }), ); - expect(res.render).toHaveBeenCalledWith('oauth-callback', { imagePath: 'n8n-logo.png' }); + expect(res.render).toHaveBeenCalledWith('oauth-callback'); }); }); }); diff --git a/packages/cli/src/controllers/oauth/oauth2-credential.controller.ts b/packages/cli/src/controllers/oauth/oauth2-credential.controller.ts index c4c24de0bc..e188670fde 100644 --- a/packages/cli/src/controllers/oauth/oauth2-credential.controller.ts +++ b/packages/cli/src/controllers/oauth/oauth2-credential.controller.ts @@ -149,7 +149,7 @@ export class OAuth2CredentialController extends AbstractOAuthController { credentialId: credential.id, }); - return res.render('oauth-callback', { imagePath: 'n8n-logo.png' }); + return res.render('oauth-callback'); } catch (error) { return this.renderCallbackError( res, diff --git a/packages/cli/templates/oauth-callback.handlebars b/packages/cli/templates/oauth-callback.handlebars index 74d57db303..311e4656fa 100644 --- a/packages/cli/templates/oauth-callback.handlebars +++ b/packages/cli/templates/oauth-callback.handlebars @@ -1,59 +1,71 @@ + + + +
-
-
- -
+
+
+

Connection successful

diff --git a/packages/cli/test/integration/controllers/oauth/oauth2.api.test.ts b/packages/cli/test/integration/controllers/oauth/oauth2.api.test.ts index 6411966dbf..f20f9df550 100644 --- a/packages/cli/test/integration/controllers/oauth/oauth2.api.test.ts +++ b/packages/cli/test/integration/controllers/oauth/oauth2.api.test.ts @@ -116,7 +116,7 @@ describe('OAuth2 API', () => { .query({ code: 'auth_code', state }) .expect(200); - expect(renderSpy).toHaveBeenCalledWith('oauth-callback', { imagePath: 'n8n-logo.png' }); + expect(renderSpy).toHaveBeenCalledWith('oauth-callback'); const updatedCredential = await Container.get(CredentialsHelper).getCredentials( credential, diff --git a/packages/editor-ui/public/static/n8n-logo.png b/packages/editor-ui/public/static/n8n-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2bb6b2d750a1cc646cbfb365820f542d72b2cd25 GIT binary patch literal 7901 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