From 00d9204bd5cdd8adcea405dfe79c6b924f61ea5a Mon Sep 17 00:00:00 2001 From: "benjamin.747" Date: Tue, 3 Sep 2024 15:40:01 +0800 Subject: [PATCH 1/2] [ui] update redirect with route handler --- README.md | 2 +- docker/README.md | 4 ++-- docker/start-moon.sh | 7 +------ moon/.env | 5 ++--- moon/README.md | 1 - moon/next.config.js | 19 ------------------- moon/src/app/auth/authorized/route.ts | 8 ++++++++ moon/src/app/auth/github/route.ts | 9 +++++++++ moon/src/app/auth/logout/route.ts | 8 ++++++++ 9 files changed, 31 insertions(+), 32 deletions(-) create mode 100644 moon/src/app/auth/authorized/route.ts create mode 100644 moon/src/app/auth/github/route.ts create mode 100644 moon/src/app/auth/logout/route.ts diff --git a/README.md b/README.md index c93a9ea69..ec4185422 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ docker network create mono-network # run postgres docker run --rm -it -d --name mono-pg --network mono-network -v /tmp/data/mono/pg-data:/var/lib/postgresql/data -p 5432:5432 mono-pg:0.1-pre-release docker run --rm -it -d --name mono-engine --network mono-network -v /tmp/data/mono/mono-data:/opt/mega -p 8000:8000 mono-engine:0.1-pre-release -docker run --rm -it -d --name mono-ui --network mono-network -e MEGA_INTERNAL_HOST=http://mono-engine:8000 -e MEGA_HOST=http://localhost:8000 -e MOON_HOST=http://localhost:3000 -p 3000:3000 mono-ui:0.1-pre-release +docker run --rm -it -d --name mono-ui --network mono-network -e MEGA_INTERNAL_HOST=http://mono-engine:8000 -e MEGA_HOST=http://localhost:8000 -p 3000:3000 mono-ui:0.1-pre-release ``` ## Quick Review of Architecture diff --git a/docker/README.md b/docker/README.md index c48b7f8aa..9e0fe68ef 100644 --- a/docker/README.md +++ b/docker/README.md @@ -43,7 +43,7 @@ docker network create mono-network # run postgres docker run --rm -it -d --name mono-pg --network mono-network -v /tmp/data/mono/pg-data:/var/lib/postgresql/data -p 5432:5432 mono-pg:0.1-pre-release docker run --rm -it -d --name mono-engine --network mono-network -v /tmp/data/mono/mono-data:/opt/mega -p 8000:8000 mono-engine:0.1-pre-release -docker run --rm -it -d --name mono-ui --network mono-network -e MEGA_INTERNAL_HOST=http://mono-engine:8000 -e MEGA_HOST=http://localhost:8000 -e MOON_HOST=http://localhost:3000 -p 3000:3000 mono-ui:0.1-pre-release +docker run --rm -it -d --name mono-ui --network mono-network -e MEGA_INTERNAL_HOST=http://mono-engine:8000 -e MEGA_HOST=http://localhost:8000 -p 3000:3000 mono-ui:0.1-pre-release ``` [3] Start whole mono engine stack on server with domain @@ -55,7 +55,7 @@ docker network create mono-network # run postgres docker run --rm -it -d --name mono-pg --network mono-network -v /mnt/data/mono/pg-data:/var/lib/postgresql/data -p 5432:5432 mono-pg:0.1-pre-release docker run --rm -it -d --name mono-engine --network mono-network -v /mnt/data/mono/mono-data:/opt/mega -p 8000:8000 -p 22:9000 mono-engine:0.1-pre-release -docker run --rm -it -d --name mono-ui --network mono-network -e MEGA_INTERNAL_HOST=http://mono-engine:8000 -e MEGA_HOST=https://git.gitmono.com -e MOON_HOST=https://console.gitmono.com -p 3000:3000 mono-ui:0.1-pre-release +docker run --rm -it -d --name mono-ui --network mono-network -e MEGA_INTERNAL_HOST=http://mono-engine:8000 -e MEGA_HOST=https://git.gitmono.com -p 3000:3000 mono-ui:0.1-pre-release ``` ## Test aries engine diff --git a/docker/start-moon.sh b/docker/start-moon.sh index 91a13d5f3..6bb3a597e 100755 --- a/docker/start-moon.sh +++ b/docker/start-moon.sh @@ -1,6 +1,6 @@ #!/bin/bash -# user must set the MEGA_HOST,MEGA_INTERNAL_HOST and MOON_HOST +# user must set the MEGA_HOST,MEGA_INTERNAL_HOST if [ -z "$MEGA_HOST" ]; then echo "MEGA_HOST is not set" exit 1 @@ -11,9 +11,4 @@ if [ -z "$MEGA_INTERNAL_HOST" ]; then exit 1 fi -if [ -z "$MOON_HOST" ]; then - echo "MOON_HOST is not set" - exit 1 -fi - exec node server.js \ No newline at end of file diff --git a/moon/.env b/moon/.env index fe8d83a10..a2e042e52 100644 --- a/moon/.env +++ b/moon/.env @@ -2,10 +2,9 @@ # Variables not prefixed with NEXT_PUBLIC_ are only available on the server side. -# add MEGA_HOST, MEGA_INTERNAL_HOST and MOON_HOST to your enviroment for development -# MEGA_HOST and MEGA_INTERNAL_HOST default to http://localhost:8000, MOON_HOST default to http://localhost:3000 +# add MEGA_HOST, MEGA_INTERNAL_HOST to your enviroment for development +# MEGA_HOST and MEGA_INTERNAL_HOST default to http://localhost:8000 MEGA_HOST=$MEGA_HOST MEGA_INTERNAL_HOST=$MEGA_INTERNAL_HOST -CALLBACK_URL=$MOON_HOST/auth/github/callback SECRET_KEY=$YOUR_SECRET_KEY #(not prefixed with NEXT_PUBLIC_ ) \ No newline at end of file diff --git a/moon/README.md b/moon/README.md index db3853f38..0165ade8d 100644 --- a/moon/README.md +++ b/moon/README.md @@ -7,7 +7,6 @@ In the root directory of your project, three environment variables are required in the `.env` file: - **MEGA_HOST**: Used for redirecting to public backend routes during the OAuth process. -- **MOON_HOST**: Provides the callback URL to the authentication provider. - **MEGA_INTERNAL_HOST**: Utilized for internal API requests. Given that the application uses SSR and Next.js Route Handlers, this variable allows you to specify a domain name within the container network. ### Environment Handling diff --git a/moon/next.config.js b/moon/next.config.js index 96885d902..d9f02c93a 100644 --- a/moon/next.config.js +++ b/moon/next.config.js @@ -12,25 +12,6 @@ const nextConfig = { }, ], }, - async redirects() { - return [ - { - source: '/auth/github', - destination: process.env.MEGA_HOST + '/auth/github', - permanent: false, - }, - { - source: '/auth/authorized', - destination: process.env.MEGA_HOST + '/auth/authorized', - permanent: false, - }, - { - source: '/auth/logout', - destination: process.env.MEGA_HOST + '/auth/logout', - permanent: false, - } - ] - }, reactStrictMode: true, transpilePackages: [ // antd & deps diff --git a/moon/src/app/auth/authorized/route.ts b/moon/src/app/auth/authorized/route.ts new file mode 100644 index 000000000..d9d88acfc --- /dev/null +++ b/moon/src/app/auth/authorized/route.ts @@ -0,0 +1,8 @@ +import { redirect } from 'next/navigation' +export const revalidate = 0 +export const dynamic = 'force-dynamic' // defaults to auto + +export async function GET() { + const endpoint = process.env.MEGA_HOST; + redirect(`${endpoint}/auth/authorized`) +} \ No newline at end of file diff --git a/moon/src/app/auth/github/route.ts b/moon/src/app/auth/github/route.ts new file mode 100644 index 000000000..7c38f8b5b --- /dev/null +++ b/moon/src/app/auth/github/route.ts @@ -0,0 +1,9 @@ +import { redirect } from 'next/navigation' + +export const revalidate = 0 +export const dynamic = 'force-dynamic' // defaults to auto + +export async function GET() { + const endpoint = process.env.MEGA_HOST; + redirect(`${endpoint}/auth/github`) +} \ No newline at end of file diff --git a/moon/src/app/auth/logout/route.ts b/moon/src/app/auth/logout/route.ts new file mode 100644 index 000000000..64dffef81 --- /dev/null +++ b/moon/src/app/auth/logout/route.ts @@ -0,0 +1,8 @@ +import { redirect } from 'next/navigation' +export const revalidate = 0 +export const dynamic = 'force-dynamic' // defaults to auto + +export async function GET() { + const endpoint = process.env.MEGA_HOST; + redirect(`${endpoint}/auth/logout`) +} \ No newline at end of file From 13e0186106fad5218a3f7058b7620e10e47c3fc6 Mon Sep 17 00:00:00 2001 From: "benjamin.747" Date: Wed, 4 Sep 2024 10:45:54 +0800 Subject: [PATCH 2/2] [ui] update redirect with route handler --- moon/src/app/auth/authorized/route.ts | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/moon/src/app/auth/authorized/route.ts b/moon/src/app/auth/authorized/route.ts index d9d88acfc..23a31f32e 100644 --- a/moon/src/app/auth/authorized/route.ts +++ b/moon/src/app/auth/authorized/route.ts @@ -1,8 +1,18 @@ -import { redirect } from 'next/navigation' export const revalidate = 0 export const dynamic = 'force-dynamic' // defaults to auto -export async function GET() { +import { NextRequest, NextResponse } from 'next/server'; + +export async function GET(request: NextRequest) { const endpoint = process.env.MEGA_HOST; - redirect(`${endpoint}/auth/authorized`) + + const currentUrl = new URL(request.url); + + const redirectUrl = new URL(`${endpoint}/auth/authorized`, request.url); + + currentUrl.searchParams.forEach((value, key) => { + redirectUrl.searchParams.set(key, value); + }); + + return NextResponse.redirect(redirectUrl.toString()); } \ No newline at end of file