diff --git a/apps/backend/src/api/routes/integrations.controller.ts b/apps/backend/src/api/routes/integrations.controller.ts index f0665778..6d89b46e 100644 --- a/apps/backend/src/api/routes/integrations.controller.ts +++ b/apps/backend/src/api/routes/integrations.controller.ts @@ -288,15 +288,19 @@ export class IntegrationsController { throw new Error('Integration not allowed'); } - const getCodeVerifier = await ioRedis.get(`login:${body.state}`); + const integrationProvider = + this._integrationManager.getSocialIntegration(integration); + + const getCodeVerifier = integrationProvider.customFields + ? 'none' + : await ioRedis.get(`login:${body.state}`); if (!getCodeVerifier) { throw new Error('Invalid state'); } - await ioRedis.del(`login:${body.state}`); - - const integrationProvider = - this._integrationManager.getSocialIntegration(integration); + if (!integrationProvider.customFields) { + await ioRedis.del(`login:${body.state}`); + } const details = integrationProvider.externalUrl ? await ioRedis.get(`external:${body.state}`) @@ -341,7 +345,13 @@ export class IntegrationsController { integrationProvider.isBetweenSteps, body.refresh, +body.timezone, - details ? AuthService.fixedEncryption(details) : undefined + details + ? AuthService.fixedEncryption(details) + : integrationProvider.customFields + ? AuthService.fixedEncryption( + Buffer.from(body.code, 'base64').toString() + ) + : undefined ); } diff --git a/apps/frontend/public/icons/platforms/bluesky.png b/apps/frontend/public/icons/platforms/bluesky.png new file mode 100644 index 00000000..492b23a6 Binary files /dev/null and b/apps/frontend/public/icons/platforms/bluesky.png differ diff --git a/apps/frontend/src/app/(site)/integrations/social/[provider]/continue/page.tsx b/apps/frontend/src/app/(site)/integrations/social/[provider]/continue/page.tsx index bead77f8..8a06e542 100644 --- a/apps/frontend/src/app/(site)/integrations/social/[provider]/continue/page.tsx +++ b/apps/frontend/src/app/(site)/integrations/social/[provider]/continue/page.tsx @@ -4,6 +4,7 @@ export const dynamic = 'force-dynamic'; import { internalFetch } from '@gitroom/helpers/utils/internal.fetch'; import { redirect } from 'next/navigation'; +import { Redirect } from '@gitroom/frontend/components/layout/redirect'; export default async function Page({ params: { provider }, @@ -30,6 +31,22 @@ export default async function Page({ return redirect(`/launches?scope=missing`); } + if ( + data.status !== HttpStatusCode.Ok && + data.status !== HttpStatusCode.Created + ) { + return ( + <> +