From a48c284ca0876807c82829f21a0316385a3b57ef Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Tue, 29 Apr 2025 07:53:40 +0000 Subject: [PATCH 1/2] feat: add admin-only route access --- .env.example | 10 +++++++--- site/src/@types/vite-env.d.ts | 3 ++- site/src/pages/LoginPage/LoginPage.tsx | 14 +++++++++----- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/.env.example b/.env.example index d7ed972edc672..5bc013bf84a30 100644 --- a/.env.example +++ b/.env.example @@ -15,6 +15,10 @@ export CODER_OIDC_REDIRECT_URI="$BASE_URL/api/v2/users/oidc/callback" export CODER_OIDC_LOGOUT_URI="https://oidc.logout.url" export CODER_OIDC_TOKEN_PATH="/home/ubuntu/.coder/tokens" -# if VITE_DISABLE_EXTERNAL_LOGIN_PAGE variable is true, CODER_DISABLE_PASSWORD_AUTH variable must be false -export VITE_DISABLE_EXTERNAL_LOGIN_PAGE=true -export CODER_DISABLE_PASSWORD_AUTH=false \ No newline at end of file +export VITE_CLIENT_URL="https://client.url" +export VITE_ADMIN_KEY_HASH="hash" +export CODER_DISABLE_PASSWORD_AUTH=false + +# GPU Manager +export TF_VAR_gpu_manager_endpoint="https://gpu.manager.endpoint" +export APP_TYPE="development" \ No newline at end of file diff --git a/site/src/@types/vite-env.d.ts b/site/src/@types/vite-env.d.ts index e9699e6947edb..413148f849ead 100644 --- a/site/src/@types/vite-env.d.ts +++ b/site/src/@types/vite-env.d.ts @@ -5,7 +5,8 @@ interface ViteTypeOptions { } interface ImportMetaEnv { - readonly VITE_DISABLE_EXTERNAL_LOGIN_PAGE: string + readonly VITE_ADMIN_KEY_HASH: string + readonly VITE_CLIENT_URL: string } interface ImportMeta { diff --git a/site/src/pages/LoginPage/LoginPage.tsx b/site/src/pages/LoginPage/LoginPage.tsx index 3da1f6da67d03..47c2ac2c64a1b 100644 --- a/site/src/pages/LoginPage/LoginPage.tsx +++ b/site/src/pages/LoginPage/LoginPage.tsx @@ -5,11 +5,12 @@ import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; import { type FC, useEffect } from "react"; import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; -import { Navigate, useLocation, useNavigate } from "react-router-dom"; +import { Navigate, useLocation, useNavigate, useSearchParams } from "react-router-dom"; import { getApplicationName } from "utils/appearance"; import { retrieveRedirect } from "utils/redirect"; import { sendDeploymentEvent } from "utils/telemetry"; import { LoginPageView } from "./LoginPageView"; +import { paramsUsedToCreateWorkspace } from "utils/workspace"; export const LoginPage: FC = () => { const location = useLocation(); @@ -69,12 +70,15 @@ export const LoginPage: FC = () => { /> ); } - } + } + + const [params] = useSearchParams(); + const adminKey = params.get("adminKey") - const disableExternalLoginPage = import.meta.env.VITE_DISABLE_EXTERNAL_LOGIN_PAGE === "true"; + const isAdmin = adminKey === import.meta.env.VITE_ADMIN_KEY_HASH; - if (!isSignedIn && !disableExternalLoginPage) { - window.location.replace(`https://heaan.io`); + if (!isSignedIn && !isAdmin) { + window.location.replace(import.meta.env.VITE_CLIENT_URL as string); return null; } From fe74df0404c698d13096fece518740473b625faf Mon Sep 17 00:00:00 2001 From: Jeong Hyohyeok <111841421+hyohyeok1@users.noreply.github.com> Date: Tue, 29 Apr 2025 17:04:27 +0900 Subject: [PATCH 2/2] Update site/src/@types/vite-env.d.ts Co-authored-by: jh-lee-cryptolab <167725275+jh-lee-cryptolab@users.noreply.github.com> --- site/src/@types/vite-env.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/src/@types/vite-env.d.ts b/site/src/@types/vite-env.d.ts index 413148f849ead..e8b256763a5fb 100644 --- a/site/src/@types/vite-env.d.ts +++ b/site/src/@types/vite-env.d.ts @@ -6,7 +6,7 @@ interface ViteTypeOptions { interface ImportMetaEnv { readonly VITE_ADMIN_KEY_HASH: string - readonly VITE_CLIENT_URL: string + readonly VITE_CLIENT_URL: string } interface ImportMeta {