From a56e67f8521ca92ddf2903c7d531ceafa1885a31 Mon Sep 17 00:00:00 2001 From: Owen Date: Mon, 19 Oct 2026 16:58:45 -0400 Subject: [PATCH] Move mtls out of private --- server/private/routers/external.ts | 24 -------------- server/private/routers/integration.ts | 33 ------------------- server/private/routers/resource/index.ts | 3 -- server/routers/external.ts | 22 +++++++++++++ server/routers/integration.ts | 33 +++++++++++++++++++ .../resource/createResourceMtlsCertificate.ts | 13 -------- .../resource/deleteResourceMtlsCertificate.ts | 13 -------- server/routers/resource/index.ts | 3 ++ .../resource/listResourceMtlsCertificates.ts | 13 -------- .../resources/public/[niceId]/mtls/page.tsx | 7 +--- 10 files changed, 59 insertions(+), 105 deletions(-) rename server/{private => }/routers/resource/createResourceMtlsCertificate.ts (95%) rename server/{private => }/routers/resource/deleteResourceMtlsCertificate.ts (91%) rename server/{private => }/routers/resource/listResourceMtlsCertificates.ts (90%) diff --git a/server/private/routers/external.ts b/server/private/routers/external.ts index 6dcf0e3be..cad76b80d 100644 --- a/server/private/routers/external.ts +++ b/server/private/routers/external.ts @@ -34,8 +34,6 @@ import * as eventStreamingDestination from "#private/routers/eventStreamingDesti import * as alertRule from "#private/routers/alertRule"; import * as healthChecks from "#private/routers/healthChecks"; import * as policy from "#private/routers/policy"; -import * as resource from "#private/routers/resource"; - import { verifyOrgAccess, verifyUserHasAction, @@ -864,25 +862,3 @@ authenticated.post( verifyOrgAccess, logs.logAccessAuditAttempt ); - -authenticated.put( - "/resource/:resourceId/mtls/certificate", - verifyResourceAccess, - verifyLimits, - verifyUserHasAction(ActionsEnum.createResourceMtlsCertificate), - logActionAudit(ActionsEnum.createResourceMtlsCertificate), - resource.createResourceMtlsCertificate -); -authenticated.get( - "/resource/:resourceId/mtls/certificates", - verifyResourceAccess, - verifyUserHasAction(ActionsEnum.listResourceMtlsCertificates), - resource.listResourceMtlsCertificates -); -authenticated.delete( - "/resource/:resourceId/mtls/certificate/:mtlsCertificateId", - verifyResourceAccess, - verifyUserHasAction(ActionsEnum.deleteResourceMtlsCertificate), - logActionAudit(ActionsEnum.deleteResourceMtlsCertificate), - resource.deleteResourceMtlsCertificate -); diff --git a/server/private/routers/integration.ts b/server/private/routers/integration.ts index c4bbe4160..9d92d3481 100644 --- a/server/private/routers/integration.ts +++ b/server/private/routers/integration.ts @@ -467,36 +467,3 @@ authenticated.get( verifyApiKeyHasAction(ActionsEnum.getTarget), healthChecks.getHealthCheckStatusHistory ); - -authenticated.put( - [ - "/resource/:resourceId/mtls/certificate", - "/public-resource/:resourceId/mtls/certificate" - ], - verifyApiKeyResourceAccess, - verifyLimits, - verifyApiKeyHasAction(ActionsEnum.createResourceMtlsCertificate), - logActionAudit(ActionsEnum.createResourceMtlsCertificate), - resource.createResourceMtlsCertificate -); - -authenticated.get( - [ - "/resource/:resourceId/mtls/certificates", - "/public-resource/:resourceId/mtls/certificates" - ], - verifyApiKeyResourceAccess, - verifyApiKeyHasAction(ActionsEnum.listResourceMtlsCertificates), - resource.listResourceMtlsCertificates -); - -authenticated.delete( - [ - "/resource/:resourceId/mtls/certificate/:mtlsCertificateId", - "/public-resource/:resourceId/mtls/certificate/:mtlsCertificateId" - ], - verifyApiKeyResourceAccess, - verifyApiKeyHasAction(ActionsEnum.deleteResourceMtlsCertificate), - logActionAudit(ActionsEnum.deleteResourceMtlsCertificate), - resource.deleteResourceMtlsCertificate -); diff --git a/server/private/routers/resource/index.ts b/server/private/routers/resource/index.ts index 6cf21f900..ea9b87d65 100644 --- a/server/private/routers/resource/index.ts +++ b/server/private/routers/resource/index.ts @@ -12,6 +12,3 @@ */ export * from "./getMaintenanceInfo"; -export * from "./deleteResourceMtlsCertificate"; -export * from "./createResourceMtlsCertificate"; -export * from "./listResourceMtlsCertificates"; diff --git a/server/routers/external.ts b/server/routers/external.ts index 71691a336..7640e98da 100644 --- a/server/routers/external.ts +++ b/server/routers/external.ts @@ -1997,6 +1997,28 @@ authenticated.put( reKey.reGenerateExitNodeSecret ); +authenticated.put( + "/resource/:resourceId/mtls/certificate", + verifyResourceAccess, + verifyLimits, + verifyUserHasAction(ActionsEnum.createResourceMtlsCertificate), + logActionAudit(ActionsEnum.createResourceMtlsCertificate), + resource.createResourceMtlsCertificate +); +authenticated.get( + "/resource/:resourceId/mtls/certificates", + verifyResourceAccess, + verifyUserHasAction(ActionsEnum.listResourceMtlsCertificates), + resource.listResourceMtlsCertificates +); +authenticated.delete( + "/resource/:resourceId/mtls/certificate/:mtlsCertificateId", + verifyResourceAccess, + verifyUserHasAction(ActionsEnum.deleteResourceMtlsCertificate), + logActionAudit(ActionsEnum.deleteResourceMtlsCertificate), + resource.deleteResourceMtlsCertificate +); + // Auth routes export const authRouter = Router(); unauthenticated.use("/auth", authRouter); diff --git a/server/routers/integration.ts b/server/routers/integration.ts index dac082434..424bbd213 100644 --- a/server/routers/integration.ts +++ b/server/routers/integration.ts @@ -1963,3 +1963,36 @@ authenticated.put( logActionAudit(ActionsEnum.detachLabelFromItem), labels.detachLabelFromItem ); + +authenticated.put( + [ + "/resource/:resourceId/mtls/certificate", + "/public-resource/:resourceId/mtls/certificate" + ], + verifyApiKeyResourceAccess, + verifyLimits, + verifyApiKeyHasAction(ActionsEnum.createResourceMtlsCertificate), + logActionAudit(ActionsEnum.createResourceMtlsCertificate), + resource.createResourceMtlsCertificate +); + +authenticated.get( + [ + "/resource/:resourceId/mtls/certificates", + "/public-resource/:resourceId/mtls/certificates" + ], + verifyApiKeyResourceAccess, + verifyApiKeyHasAction(ActionsEnum.listResourceMtlsCertificates), + resource.listResourceMtlsCertificates +); + +authenticated.delete( + [ + "/resource/:resourceId/mtls/certificate/:mtlsCertificateId", + "/public-resource/:resourceId/mtls/certificate/:mtlsCertificateId" + ], + verifyApiKeyResourceAccess, + verifyApiKeyHasAction(ActionsEnum.deleteResourceMtlsCertificate), + logActionAudit(ActionsEnum.deleteResourceMtlsCertificate), + resource.deleteResourceMtlsCertificate +); diff --git a/server/private/routers/resource/createResourceMtlsCertificate.ts b/server/routers/resource/createResourceMtlsCertificate.ts similarity index 95% rename from server/private/routers/resource/createResourceMtlsCertificate.ts rename to server/routers/resource/createResourceMtlsCertificate.ts index d42293441..5ad04b55d 100644 --- a/server/private/routers/resource/createResourceMtlsCertificate.ts +++ b/server/routers/resource/createResourceMtlsCertificate.ts @@ -1,16 +1,3 @@ -/* - * This file is part of a proprietary work. - * - * Copyright (c) 2025-2026 Fossorial, Inc. - * All rights reserved. - * - * This file is licensed under the Fossorial Commercial License. - * You may not use this file except in compliance with the License. - * Unauthorized use, copying, modification, or distribution is strictly prohibited. - * - * This file is not licensed under the AGPLv3. - */ - import { Request, Response, NextFunction } from "express"; import { z } from "zod"; import { db, resourceMtlsCertificates, resources } from "@server/db"; diff --git a/server/private/routers/resource/deleteResourceMtlsCertificate.ts b/server/routers/resource/deleteResourceMtlsCertificate.ts similarity index 91% rename from server/private/routers/resource/deleteResourceMtlsCertificate.ts rename to server/routers/resource/deleteResourceMtlsCertificate.ts index c74f0eb1f..f9ee3c2f6 100644 --- a/server/private/routers/resource/deleteResourceMtlsCertificate.ts +++ b/server/routers/resource/deleteResourceMtlsCertificate.ts @@ -1,16 +1,3 @@ -/* - * This file is part of a proprietary work. - * - * Copyright (c) 2025-2026 Fossorial, Inc. - * All rights reserved. - * - * This file is licensed under the Fossorial Commercial License. - * You may not use this file except in compliance with the License. - * Unauthorized use, copying, modification, or distribution is strictly prohibited. - * - * This file is not licensed under the AGPLv3. - */ - import { Request, Response, NextFunction } from "express"; import { z } from "zod"; import { db, resourceMtlsCertificates, resources } from "@server/db"; diff --git a/server/routers/resource/index.ts b/server/routers/resource/index.ts index 7c888004c..c4004fe1b 100644 --- a/server/routers/resource/index.ts +++ b/server/routers/resource/index.ts @@ -45,3 +45,6 @@ export * from "./addAiProviderToResource"; export * from "./removeAiProviderFromResource"; export * from "./exportResourceBlueprint"; export * from "./types"; +export * from "./deleteResourceMtlsCertificate"; +export * from "./createResourceMtlsCertificate"; +export * from "./listResourceMtlsCertificates"; diff --git a/server/private/routers/resource/listResourceMtlsCertificates.ts b/server/routers/resource/listResourceMtlsCertificates.ts similarity index 90% rename from server/private/routers/resource/listResourceMtlsCertificates.ts rename to server/routers/resource/listResourceMtlsCertificates.ts index aa6ab8b24..142d225b7 100644 --- a/server/private/routers/resource/listResourceMtlsCertificates.ts +++ b/server/routers/resource/listResourceMtlsCertificates.ts @@ -1,16 +1,3 @@ -/* - * This file is part of a proprietary work. - * - * Copyright (c) 2025-2026 Fossorial, Inc. - * All rights reserved. - * - * This file is licensed under the Fossorial Commercial License. - * You may not use this file except in compliance with the License. - * Unauthorized use, copying, modification, or distribution is strictly prohibited. - * - * This file is not licensed under the AGPLv3. - */ - import { Request, Response, NextFunction } from "express"; import { z } from "zod"; import { db, resourceMtlsCertificates, resources } from "@server/db"; diff --git a/src/app/[orgId]/settings/resources/public/[niceId]/mtls/page.tsx b/src/app/[orgId]/settings/resources/public/[niceId]/mtls/page.tsx index 7fd454d31..955eb041c 100644 --- a/src/app/[orgId]/settings/resources/public/[niceId]/mtls/page.tsx +++ b/src/app/[orgId]/settings/resources/public/[niceId]/mtls/page.tsx @@ -16,14 +16,11 @@ import { import { SwitchInput } from "@app/components/SwitchInput"; import { Alert, AlertDescription, AlertTitle } from "@app/components/ui/alert"; import { Badge } from "@app/components/ui/badge"; -import { PaidFeaturesAlert } from "@app/components/PaidFeaturesAlert"; import { useEnvContext } from "@app/hooks/useEnvContext"; -import { usePaidStatus } from "@app/hooks/usePaidStatus"; import { useResourceContext } from "@app/hooks/useResourceContext"; import { toast } from "@app/hooks/useToast"; import { createApiClient, formatAxiosError } from "@app/lib/api"; import { resourceQueries } from "@app/lib/queries"; -import { tierMatrix } from "@server/lib/billing/tierMatrix"; import type { CreateResourceMtlsCertificateResponse, DeleteResourceMtlsCertificateResponse, @@ -47,10 +44,9 @@ export default function ResourceMtlsPage() { const t = useTranslations(); const api = createApiClient({ env }); const queryClient = useQueryClient(); - const { isPaidUser } = usePaidStatus(); const supportsMtls = resource.mode === "http"; - const isMtlsDisabled = !isPaidUser(tierMatrix.mtls); + const isMtlsDisabled = false; useEffect(() => { if (env.flags.disableEnterpriseFeatures || !supportsMtls) { @@ -206,7 +202,6 @@ export default function ResourceMtlsPage() { return ( <> -