From c233fc564ee9c9dde78393c15e56dec58b686697 Mon Sep 17 00:00:00 2001 From: Owen Date: Fri, 5 Dec 2025 21:28:41 -0500 Subject: [PATCH] Fix credentials --- .../routers/re-key/reGenerateClientSecret.ts | 6 ++++-- .../re-key/reGenerateExitNodeSecret.ts | 10 +++------- .../routers/re-key/reGenerateSiteSecret.ts | 4 +++- server/routers/remoteExitNode/types.ts | 5 ----- .../[remoteExitNodeId]/credentials/page.tsx | 6 ------ .../machine/[clientId]/credentials/page.tsx | 17 +++++++++-------- .../sites/[niceId]/credentials/page.tsx | 19 +++++++++++-------- 7 files changed, 30 insertions(+), 37 deletions(-) diff --git a/server/private/routers/re-key/reGenerateClientSecret.ts b/server/private/routers/re-key/reGenerateClientSecret.ts index 1eb99e8b..03235ae1 100644 --- a/server/private/routers/re-key/reGenerateClientSecret.ts +++ b/server/private/routers/re-key/reGenerateClientSecret.ts @@ -13,7 +13,7 @@ import { Request, Response, NextFunction } from "express"; import { z } from "zod"; -import { db, olms } from "@server/db"; +import { db, Olm, olms } from "@server/db"; import { clients } from "@server/db"; import response from "@server/lib/response"; import HttpCode from "@server/types/HttpCode"; @@ -146,7 +146,9 @@ export async function reGenerateClientSecret( }); return response(res, { - data: existingOlms, + data: { + olmId: existingOlms[0].olmId, + }, success: true, error: false, message: "Credentials regenerated successfully", diff --git a/server/private/routers/re-key/reGenerateExitNodeSecret.ts b/server/private/routers/re-key/reGenerateExitNodeSecret.ts index d0445aec..2a28f669 100644 --- a/server/private/routers/re-key/reGenerateExitNodeSecret.ts +++ b/server/private/routers/re-key/reGenerateExitNodeSecret.ts @@ -12,7 +12,7 @@ */ import { NextFunction, Request, Response } from "express"; -import { db, exitNodes, exitNodeOrgs, ExitNode, ExitNodeOrg } from "@server/db"; +import { db, exitNodes, exitNodeOrgs, ExitNode, ExitNodeOrg, RemoteExitNode } from "@server/db"; import HttpCode from "@server/types/HttpCode"; import { z } from "zod"; import { remoteExitNodes } from "@server/db"; @@ -22,7 +22,6 @@ import { fromError } from "zod-validation-error"; import { hashPassword } from "@server/auth/password"; import logger from "@server/logger"; import { and, eq } from "drizzle-orm"; -import { UpdateRemoteExitNodeResponse } from "@server/routers/remoteExitNode/types"; import { OpenAPITags, registry } from "@server/openApi"; import { disconnectClient } from "@server/routers/ws"; @@ -108,11 +107,8 @@ export async function reGenerateExitNodeSecret( } ); - return response(res, { - data: { - remoteExitNodeId, - secret - }, + return response(res, { + data: null, success: true, error: false, message: "Remote Exit Node secret updated successfully", diff --git a/server/private/routers/re-key/reGenerateSiteSecret.ts b/server/private/routers/re-key/reGenerateSiteSecret.ts index 0b53cc92..78b7bda4 100644 --- a/server/private/routers/re-key/reGenerateSiteSecret.ts +++ b/server/private/routers/re-key/reGenerateSiteSecret.ts @@ -214,7 +214,9 @@ export async function reGenerateSiteSecret( } return response(res, { - data: existingNewt, + data: { + newtId: existingNewt ? existingNewt.newtId : undefined + }, success: true, error: false, message: "Credentials regenerated successfully", diff --git a/server/routers/remoteExitNode/types.ts b/server/routers/remoteExitNode/types.ts index ae0c2130..55d0a286 100644 --- a/server/routers/remoteExitNode/types.ts +++ b/server/routers/remoteExitNode/types.ts @@ -6,11 +6,6 @@ export type CreateRemoteExitNodeResponse = { secret: string; }; -export type UpdateRemoteExitNodeResponse = { - remoteExitNodeId: string; - secret: string; -} - export type PickRemoteExitNodeDefaultsResponse = { remoteExitNodeId: string; secret: string; diff --git a/src/app/[orgId]/settings/(private)/remote-exit-nodes/[remoteExitNodeId]/credentials/page.tsx b/src/app/[orgId]/settings/(private)/remote-exit-nodes/[remoteExitNodeId]/credentials/page.tsx index 085651fb..2f71de3e 100644 --- a/src/app/[orgId]/settings/(private)/remote-exit-nodes/[remoteExitNodeId]/credentials/page.tsx +++ b/src/app/[orgId]/settings/(private)/remote-exit-nodes/[remoteExitNodeId]/credentials/page.tsx @@ -25,12 +25,6 @@ import RegenerateCredentialsModal from "@app/components/RegenerateCredentialsMod import { useSubscriptionStatusContext } from "@app/hooks/useSubscriptionStatusContext"; import { useLicenseStatusContext } from "@app/hooks/useLicenseStatusContext"; import { build } from "@server/build"; -import { - Tooltip, - TooltipContent, - TooltipProvider, - TooltipTrigger -} from "@app/components/ui/tooltip"; import { SecurityFeaturesAlert } from "@app/components/SecurityFeaturesAlert"; export default function CredentialsPage() { diff --git a/src/app/[orgId]/settings/clients/machine/[clientId]/credentials/page.tsx b/src/app/[orgId]/settings/clients/machine/[clientId]/credentials/page.tsx index 9f0e3d0f..7de4361e 100644 --- a/src/app/[orgId]/settings/clients/machine/[clientId]/credentials/page.tsx +++ b/src/app/[orgId]/settings/clients/machine/[clientId]/credentials/page.tsx @@ -11,12 +11,6 @@ import { SettingsSectionTitle } from "@app/components/Settings"; import { Button } from "@app/components/ui/button"; -import { - Tooltip, - TooltipContent, - TooltipProvider, - TooltipTrigger -} from "@app/components/ui/tooltip"; import { useClientContext } from "@app/hooks/useClientContext"; import { useEnvContext } from "@app/hooks/useEnvContext"; import { useLicenseStatusContext } from "@app/hooks/useLicenseStatusContext"; @@ -55,15 +49,22 @@ export default function CredentialsPage() { const res = await api.get(`/org/${orgId}/pick-client-defaults`); if (res && res.status === 200) { const data = res.data.data; - setClientDefaults(data); - await api.post( + const rekeyRes = await api.post( `/re-key/${client?.clientId}/regenerate-client-secret`, { secret: data.olmSecret } ); + if (rekeyRes && rekeyRes.status === 200) { + const rekeyData = rekeyRes.data.data; + setClientDefaults({ + ...data, + olmId: rekeyData.olmId, + }); + } + toast({ title: t("credentialsSaved"), description: t("credentialsSavedDescription") diff --git a/src/app/[orgId]/settings/sites/[niceId]/credentials/page.tsx b/src/app/[orgId]/settings/sites/[niceId]/credentials/page.tsx index 0133d3c0..0836d490 100644 --- a/src/app/[orgId]/settings/sites/[niceId]/credentials/page.tsx +++ b/src/app/[orgId]/settings/sites/[niceId]/credentials/page.tsx @@ -22,12 +22,6 @@ import RegenerateCredentialsModal from "@app/components/RegenerateCredentialsMod import { useLicenseStatusContext } from "@app/hooks/useLicenseStatusContext"; import { useSubscriptionStatusContext } from "@app/hooks/useSubscriptionStatusContext"; import { build } from "@server/build"; -import { - Tooltip, - TooltipContent, - TooltipProvider, - TooltipTrigger -} from "@app/components/ui/tooltip"; import { SecurityFeaturesAlert } from "@app/components/SecurityFeaturesAlert"; export default function CredentialsPage() { @@ -111,15 +105,24 @@ PersistentKeepalive = 5`; const res = await api.get(`/org/${orgId}/pick-site-defaults`); if (res && res.status === 200) { const data = res.data.data; - setSiteDefaults(data); - await api.post( + const rekeyRes = await api.post( `/re-key/${site?.siteId}/regenerate-site-secret`, { type: "newt", secret: data.newtSecret } ); + + if (rekeyRes && rekeyRes.status === 200) { + const rekeyData = rekeyRes.data.data; + if (rekeyData && rekeyData.newtId) { + setSiteDefaults({ + ...data, + newtId: rekeyData.newtId + }); + } + } } }