From 54c9f696c02fce7fb85cbdba873de085213fc3e6 Mon Sep 17 00:00:00 2001 From: Slawa Pidgorny Date: Sat, 25 Nov 2023 22:34:55 +0100 Subject: [PATCH 1/5] Update login.ts Add NEXT_PUBLIC_APP_URL env --- packages/outstatic/src/app/api/auth/login.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/outstatic/src/app/api/auth/login.ts b/packages/outstatic/src/app/api/auth/login.ts index d449f51a..4fdde356 100644 --- a/packages/outstatic/src/app/api/auth/login.ts +++ b/packages/outstatic/src/app/api/auth/login.ts @@ -8,6 +8,9 @@ export default async function GET() { url.searchParams.append('client_id', process.env.OST_GITHUB_ID ?? '') url.searchParams.append('scope', scopes.join(',')) url.searchParams.append('response_type', 'code') + if (process.env?.NEXT_PUBLIC_APP_URL) { + url.searchParams.append('redirect_uri', process.env?.NEXT_PUBLIC_APP_URL) + } redirect(url.toString()) } From e7cc55c0e8f2afbc34480aa2db3782a77ae36283 Mon Sep 17 00:00:00 2001 From: Slawa Pidgorny Date: Sun, 26 Nov 2023 22:02:09 +0100 Subject: [PATCH 2/5] Change env to OST_GITHUB_CALLBACK_URL --- packages/outstatic/src/app/api/auth/login.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/outstatic/src/app/api/auth/login.ts b/packages/outstatic/src/app/api/auth/login.ts index 4fdde356..3895cdcb 100644 --- a/packages/outstatic/src/app/api/auth/login.ts +++ b/packages/outstatic/src/app/api/auth/login.ts @@ -8,8 +8,8 @@ export default async function GET() { url.searchParams.append('client_id', process.env.OST_GITHUB_ID ?? '') url.searchParams.append('scope', scopes.join(',')) url.searchParams.append('response_type', 'code') - if (process.env?.NEXT_PUBLIC_APP_URL) { - url.searchParams.append('redirect_uri', process.env?.NEXT_PUBLIC_APP_URL) + if (process.env?.OST_GITHUB_CALLBACK_URL) { + url.searchParams.append('redirect_uri', process.env?.OST_GITHUB_CALLBACK_URL) } redirect(url.toString()) From 90996157a3d4980530035cbf897432ea61f540d2 Mon Sep 17 00:00:00 2001 From: Andre Vitorio Date: Sun, 26 Nov 2023 23:08:03 +0100 Subject: [PATCH 3/5] feat: throw redirect_uri_mismatch error --- packages/outstatic/src/app/api/auth/callback.ts | 9 ++++++++- .../outstatic/src/utils/errors/loginErrors.tsx | 16 ++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/packages/outstatic/src/app/api/auth/callback.ts b/packages/outstatic/src/app/api/auth/callback.ts index af1c1555..1a00f3d9 100644 --- a/packages/outstatic/src/app/api/auth/callback.ts +++ b/packages/outstatic/src/app/api/auth/callback.ts @@ -1,7 +1,7 @@ -import { NextRequest, NextResponse } from 'next/server' import { createEdgeRouter } from 'next-connect' import nextSession from 'next-session' import { Session } from 'next-session/lib/types' +import { NextRequest, NextResponse } from 'next/server' import { setLoginSession } from '../../../utils/auth/auth' import { MAX_AGE } from '../../../utils/auth/auth-cookies' @@ -100,6 +100,13 @@ router } }) .get(async (req) => { + const error = req?.nextUrl.searchParams?.get('error') + + // check for GitHub errors + if (error) { + return NextResponse.json({ error }, { status: 403 }) + } + const code = req?.nextUrl.searchParams?.get('code') as string const access_token = await getAccessToken(code) req.session.token = access_token diff --git a/packages/outstatic/src/utils/errors/loginErrors.tsx b/packages/outstatic/src/utils/errors/loginErrors.tsx index 42870a60..16d98355 100644 --- a/packages/outstatic/src/utils/errors/loginErrors.tsx +++ b/packages/outstatic/src/utils/errors/loginErrors.tsx @@ -27,6 +27,22 @@ const loginErrors = { . + ), + redirect_uri_mismatch: ( + <> + The redirect_uri MUST match the registered callback URL for this + application.
+
+ For more information:{' '} + + GitHub Apps troubleshooting + + . + ) } From 7ee0b6f871777c3a3e552146bf40ed5770123183 Mon Sep 17 00:00:00 2001 From: Andre Vitorio Date: Sun, 26 Nov 2023 23:16:36 +0100 Subject: [PATCH 4/5] Create rare-onions-roll.md --- .changeset/rare-onions-roll.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/rare-onions-roll.md diff --git a/.changeset/rare-onions-roll.md b/.changeset/rare-onions-roll.md new file mode 100644 index 00000000..09a6b5f7 --- /dev/null +++ b/.changeset/rare-onions-roll.md @@ -0,0 +1,5 @@ +--- +"outstatic": patch +--- + +Allow to set redirect_uri when logging-in thru GitHub (uses OST_GITHUB_CALLBACK_URL) From f3ac05c48309e9ab4a0e891cd7aecc3eb4a1a04e Mon Sep 17 00:00:00 2001 From: Andre Vitorio Date: Sun, 26 Nov 2023 23:19:04 +0100 Subject: [PATCH 5/5] feat: add OST_GITHUB_CALLBACK_URL to turbo.json --- packages/outstatic/src/app/api/auth/login.ts | 2 +- turbo.json | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/outstatic/src/app/api/auth/login.ts b/packages/outstatic/src/app/api/auth/login.ts index 3895cdcb..c1e4ccbe 100644 --- a/packages/outstatic/src/app/api/auth/login.ts +++ b/packages/outstatic/src/app/api/auth/login.ts @@ -9,7 +9,7 @@ export default async function GET() { url.searchParams.append('scope', scopes.join(',')) url.searchParams.append('response_type', 'code') if (process.env?.OST_GITHUB_CALLBACK_URL) { - url.searchParams.append('redirect_uri', process.env?.OST_GITHUB_CALLBACK_URL) + url.searchParams.append('redirect_uri', process.env.OST_GITHUB_CALLBACK_URL) } redirect(url.toString()) diff --git a/turbo.json b/turbo.json index ac7c6e76..43b8caf1 100644 --- a/turbo.json +++ b/turbo.json @@ -43,7 +43,8 @@ "OST_REPO_OWNER", "OST_TOKEN_SECRET", "VERCEL_GIT_REPO_SLUG", - "OPENAI_API_KEY" + "OPENAI_API_KEY", + "OST_GITHUB_CALLBACK_URL" ] } }