From 11e3e0fc24a17cc91cdf58feb635a8df1d0cc2a6 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 15 Feb 2021 12:43:41 +0100 Subject: [PATCH] backend: mock custom google auth provider Signed-off-by: Patrik Oldsberg --- packages/backend/src/plugins/auth.ts | 31 ++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/packages/backend/src/plugins/auth.ts b/packages/backend/src/plugins/auth.ts index 2b1c85f052..43bc8393bb 100644 --- a/packages/backend/src/plugins/auth.ts +++ b/packages/backend/src/plugins/auth.ts @@ -14,7 +14,11 @@ * limitations under the License. */ -import { createRouter } from '@backstage/plugin-auth-backend'; +import { + createGoogleProvider, + createRouter, + defaultAuthProviderFactories, +} from '@backstage/plugin-auth-backend'; import { Router } from 'express'; import { PluginEnvironment } from '../types'; @@ -24,5 +28,28 @@ export default async function createPlugin({ config, discovery, }: PluginEnvironment): Promise { - return await createRouter({ logger, config, database, discovery }); + return await createRouter({ + logger, + config, + database, + discovery, + providerFactories: { + ...defaultAuthProviderFactories, + google: createGoogleProvider({ + signIn: { + // resolver: 'email', + resolver: async ({ profile: { email } }, ctx) => { + if (!email) { + throw new Error('No email associated with user account'); + } + const id = email.split('@')[0]; + const token = await ctx.tokenIssuer.issueToken({ + claims: { sub: id, ent: [id] }, + }); + return { id, token }; + }, + }, + }), + }, + }); }