diff --git a/src/app/auth/2fa/setup/layout.tsx b/src/app/auth/2fa/setup/layout.tsx new file mode 100644 index 000000000..db9a76aa4 --- /dev/null +++ b/src/app/auth/2fa/setup/layout.tsx @@ -0,0 +1,13 @@ +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Set Up 2FA" +}; + +export default function TwoFactorSetupLayout({ + children +}: { + children: React.ReactNode; +}) { + return <>{children}; +} diff --git a/src/app/auth/delete-account/page.tsx b/src/app/auth/delete-account/page.tsx index 5cbc8d738..4a67f268e 100644 --- a/src/app/auth/delete-account/page.tsx +++ b/src/app/auth/delete-account/page.tsx @@ -5,6 +5,11 @@ import { cache } from "react"; import DeleteAccountClient from "./DeleteAccountClient"; import { getTranslations } from "next-intl/server"; import { getUserDisplayName } from "@app/lib/getUserDisplayName"; +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Delete Account" +}; export const dynamic = "force-dynamic"; diff --git a/src/app/auth/idp/[idpId]/oidc/callback/page.tsx b/src/app/auth/idp/[idpId]/oidc/callback/page.tsx index 7b3ccabfc..12d161a1b 100644 --- a/src/app/auth/idp/[idpId]/oidc/callback/page.tsx +++ b/src/app/auth/idp/[idpId]/oidc/callback/page.tsx @@ -8,6 +8,11 @@ import { getTranslations } from "next-intl/server"; import { pullEnv } from "@app/lib/pullEnv"; import { LoadLoginPageResponse } from "@server/routers/loginPage/types"; import { redirect } from "next/navigation"; +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Complete Login" +}; export const dynamic = "force-dynamic"; diff --git a/src/app/auth/initial-setup/layout.tsx b/src/app/auth/initial-setup/layout.tsx index 8407f0da6..590f24431 100644 --- a/src/app/auth/initial-setup/layout.tsx +++ b/src/app/auth/initial-setup/layout.tsx @@ -3,6 +3,11 @@ import { authCookieHeader } from "@app/lib/api/cookies"; import { InitialSetupCompleteResponse } from "@server/routers/auth"; import { AxiosResponse } from "axios"; import { redirect } from "next/navigation"; +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Initial Setup" +}; export default async function Layout(props: { children: React.ReactNode }) { const setupRes = await internal.get< diff --git a/src/app/auth/layout.tsx b/src/app/auth/layout.tsx index 2cd8b4876..223c4e26c 100644 --- a/src/app/auth/layout.tsx +++ b/src/app/auth/layout.tsx @@ -10,7 +10,10 @@ import { getTranslations } from "next-intl/server"; import { cache } from "react"; export const metadata: Metadata = { - title: `Auth - ${process.env.BRANDING_APP_NAME || "Pangolin"}`, + title: { + template: `%s - ${process.env.BRANDING_APP_NAME || "Pangolin"}`, + default: `Auth - ${process.env.BRANDING_APP_NAME || "Pangolin"}` + }, description: "" }; diff --git a/src/app/auth/login/device/page.tsx b/src/app/auth/login/device/page.tsx index 01c23c999..0fb77da89 100644 --- a/src/app/auth/login/device/page.tsx +++ b/src/app/auth/login/device/page.tsx @@ -4,6 +4,11 @@ import DeviceLoginForm from "@/components/DeviceLoginForm"; import { getUserDisplayName } from "@app/lib/getUserDisplayName"; import { cache } from "react"; import { cleanRedirect } from "@app/lib/cleanRedirect"; +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Authorize Device" +}; export const dynamic = "force-dynamic"; diff --git a/src/app/auth/login/device/success/layout.tsx b/src/app/auth/login/device/success/layout.tsx new file mode 100644 index 000000000..53a3c8af6 --- /dev/null +++ b/src/app/auth/login/device/success/layout.tsx @@ -0,0 +1,13 @@ +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Device Authorized" +}; + +export default function DeviceAuthSuccessLayout({ + children +}: { + children: React.ReactNode; +}) { + return <>{children}; +} diff --git a/src/app/auth/login/page.tsx b/src/app/auth/login/page.tsx index bfb552df4..9b1639925 100644 --- a/src/app/auth/login/page.tsx +++ b/src/app/auth/login/page.tsx @@ -17,6 +17,11 @@ import { priv } from "@app/lib/api"; import { AxiosResponse } from "axios"; import { LoginFormIDP } from "@app/components/LoginForm"; import { ListIdpsResponse } from "@server/routers/idp"; +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Log In" +}; export const dynamic = "force-dynamic"; diff --git a/src/app/auth/org/[orgId]/page.tsx b/src/app/auth/org/[orgId]/page.tsx index f68efa712..2329d5b7c 100644 --- a/src/app/auth/org/[orgId]/page.tsx +++ b/src/app/auth/org/[orgId]/page.tsx @@ -12,6 +12,11 @@ import { import { redirect } from "next/navigation"; import OrgLoginPage from "@app/components/OrgLoginPage"; import { pullEnv } from "@app/lib/pullEnv"; +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Organization Login" +}; export const dynamic = "force-dynamic"; diff --git a/src/app/auth/org/page.tsx b/src/app/auth/org/page.tsx index 3af4f7d6c..70ea0611b 100644 --- a/src/app/auth/org/page.tsx +++ b/src/app/auth/org/page.tsx @@ -18,6 +18,11 @@ import ValidateSessionTransferToken from "@app/components/ValidateSessionTransfe import { isOrgSubscribed } from "@app/lib/api/isOrgSubscribed"; import { OrgSelectionForm } from "@app/components/OrgSelectionForm"; import OrgLoginPage from "@app/components/OrgLoginPage"; +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Choose Organization" +}; export const dynamic = "force-dynamic"; diff --git a/src/app/auth/reset-password/page.tsx b/src/app/auth/reset-password/page.tsx index 1245ca09c..18fbcf432 100644 --- a/src/app/auth/reset-password/page.tsx +++ b/src/app/auth/reset-password/page.tsx @@ -7,6 +7,11 @@ import { cleanRedirect } from "@app/lib/cleanRedirect"; import { getTranslations } from "next-intl/server"; import { internal } from "@app/lib/api"; import { authCookieHeader } from "@app/lib/api/cookies"; +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Reset Password" +}; export const dynamic = "force-dynamic"; diff --git a/src/app/auth/resource/[resourceGuid]/page.tsx b/src/app/auth/resource/[resourceGuid]/page.tsx index 919dfbd81..f22a59d6b 100644 --- a/src/app/auth/resource/[resourceGuid]/page.tsx +++ b/src/app/auth/resource/[resourceGuid]/page.tsx @@ -27,6 +27,11 @@ import { CheckOrgUserAccessResponse } from "@server/routers/org"; import OrgPolicyRequired from "@app/components/OrgPolicyRequired"; import { isOrgSubscribed } from "@app/lib/api/isOrgSubscribed"; import { normalizePostAuthPath } from "@server/lib/normalizePostAuthPath"; +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Resource Access" +}; export const dynamic = "force-dynamic"; diff --git a/src/app/auth/signup/page.tsx b/src/app/auth/signup/page.tsx index f51ac9049..be138c45d 100644 --- a/src/app/auth/signup/page.tsx +++ b/src/app/auth/signup/page.tsx @@ -7,6 +7,11 @@ import Link from "next/link"; import { redirect } from "next/navigation"; import { cache } from "react"; import { getTranslations } from "next-intl/server"; +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Create Account" +}; export const dynamic = "force-dynamic"; diff --git a/src/app/auth/verify-email/page.tsx b/src/app/auth/verify-email/page.tsx index e4428370b..bb844057c 100644 --- a/src/app/auth/verify-email/page.tsx +++ b/src/app/auth/verify-email/page.tsx @@ -4,6 +4,11 @@ import { cleanRedirect } from "@app/lib/cleanRedirect"; import { pullEnv } from "@app/lib/pullEnv"; import { redirect } from "next/navigation"; import { cache } from "react"; +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Verify Email" +}; export const dynamic = "force-dynamic";