diff --git a/src/app/rdp/RdpClient.tsx b/src/app/rdp/RdpClient.tsx
index 03162ddd8..f5ad0dc1d 100644
--- a/src/app/rdp/RdpClient.tsx
+++ b/src/app/rdp/RdpClient.tsx
@@ -35,6 +35,7 @@ import {
import { Alert, AlertDescription } from "@app/components/ui/alert";
import BrandedAuthSurface from "@app/components/BrandedAuthSurface";
import PoweredByPangolin from "@app/components/PoweredByPangolin";
+import AuthPageFooterNotices from "@app/components/AuthPageFooterNotices";
import { useTranslations } from "next-intl";
declare module "react" {
@@ -443,6 +444,7 @@ export default function RdpClient({
+
)}
diff --git a/src/app/ssh/SshClient.tsx b/src/app/ssh/SshClient.tsx
index 9ffdf53ce..8d97b970b 100644
--- a/src/app/ssh/SshClient.tsx
+++ b/src/app/ssh/SshClient.tsx
@@ -31,6 +31,7 @@ import type { SignSshKeyResponse } from "@server/routers/ssh/types";
import { useTranslations } from "next-intl";
import BrandedAuthSurface from "@app/components/BrandedAuthSurface";
import PoweredByPangolin from "@app/components/PoweredByPangolin";
+import AuthPageFooterNotices from "@app/components/AuthPageFooterNotices";
type AuthTab = "password" | "privateKey";
@@ -618,6 +619,7 @@ export default function SshClient({
+
)}
diff --git a/src/app/vnc/VncClient.tsx b/src/app/vnc/VncClient.tsx
index 037e30814..71f4ae8da 100644
--- a/src/app/vnc/VncClient.tsx
+++ b/src/app/vnc/VncClient.tsx
@@ -26,6 +26,7 @@ import {
import { Alert, AlertDescription } from "@app/components/ui/alert";
import BrandedAuthSurface from "@app/components/BrandedAuthSurface";
import PoweredByPangolin from "@app/components/PoweredByPangolin";
+import AuthPageFooterNotices from "@app/components/AuthPageFooterNotices";
import { useTranslations } from "next-intl";
type VncCredentialsForm = {
@@ -242,6 +243,7 @@ export default function VncClient({
+
)}
diff --git a/src/components/AuthPageFooterNotices.tsx b/src/components/AuthPageFooterNotices.tsx
new file mode 100644
index 000000000..af9125953
--- /dev/null
+++ b/src/components/AuthPageFooterNotices.tsx
@@ -0,0 +1,40 @@
+"use client";
+
+import { useSupporterStatusContext } from "@app/hooks/useSupporterStatusContext";
+import { useLicenseStatusContext } from "@app/hooks/useLicenseStatusContext";
+import { useTranslations } from "next-intl";
+import { build } from "@server/build";
+
+export default function AuthPageFooterNotices() {
+ const t = useTranslations();
+ const { supporterStatus } = useSupporterStatusContext();
+ const { isUnlocked, licenseStatus } = useLicenseStatusContext();
+
+ return (
+ <>
+ {supporterStatus?.visible && (
+
+
+ {t("noSupportKey")}
+
+
+ )}
+ {build === "enterprise" && !isUnlocked() ? (
+
+
+ {t("instanceIsUnlicensed")}
+
+
+ ) : null}
+ {build === "enterprise" &&
+ isUnlocked() &&
+ licenseStatus?.tier === "personal" ? (
+
+
+ {t("loginPageLicenseWatermark")}
+
+
+ ) : null}
+ >
+ );
+}
diff --git a/src/components/ResourceAuthPortal.tsx b/src/components/ResourceAuthPortal.tsx
index 018a08179..c7d947510 100644
--- a/src/components/ResourceAuthPortal.tsx
+++ b/src/components/ResourceAuthPortal.tsx
@@ -44,7 +44,7 @@ import { toast } from "@app/hooks/useToast";
import BrandingLogo from "@app/components/BrandingLogo";
import BrandedAuthSurface from "@app/components/BrandedAuthSurface";
import PoweredByPangolin from "@app/components/PoweredByPangolin";
-import { useSupporterStatusContext } from "@app/hooks/useSupporterStatusContext";
+import AuthPageFooterNotices from "@app/components/AuthPageFooterNotices";
import { useTranslations } from "next-intl";
import { build } from "@server/build";
import { useLicenseStatusContext } from "@app/hooks/useLicenseStatusContext";
@@ -124,8 +124,6 @@ export default function ResourceAuthPortal(props: ResourceAuthPortalProps) {
const { env } = useEnvContext();
- const { supporterStatus } = useSupporterStatusContext();
-
function getDefaultSelectedMethod() {
if (props.methods.sso) {
return "sso";
@@ -727,29 +725,7 @@ export default function ResourceAuthPortal(props: ResourceAuthPortalProps) {
- {supporterStatus?.visible && (
-
-
- {t("noSupportKey")}
-
-
- )}
- {build === "enterprise" && !isUnlocked() ? (
-
-
- {t("instanceIsUnlicensed")}
-
-
- ) : null}
- {build === "enterprise" &&
- isUnlocked() &&
- licenseStatus?.tier === "personal" ? (
-
-
- {t("loginPageLicenseWatermark")}
-
-
- ) : null}
+
) : (