diff --git a/apps/web/app/(use-page-wrapper)/availability/[schedule]/page.tsx b/apps/web/app/(use-page-wrapper)/availability/[schedule]/page.tsx index b3bd4d233a..d3d443ec18 100644 --- a/apps/web/app/(use-page-wrapper)/availability/[schedule]/page.tsx +++ b/apps/web/app/(use-page-wrapper)/availability/[schedule]/page.tsx @@ -4,7 +4,9 @@ import { notFound } from "next/navigation"; import { cache } from "react"; import { z } from "zod"; -// import { getServerSessionForAppDir } from "@calcom/feature-auth/lib/get-server-session-for-app-dir"; +// import { cookies, headers } from "next/headers"; +// import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; +// import { buildLegacyRequest } from "@lib/buildLegacyCtx"; import { ScheduleRepository } from "@calcom/lib/server/repository/schedule"; // import { TravelScheduleRepository } from "@calcom/lib/server/repository/travelSchedule"; @@ -47,7 +49,7 @@ const Page = async ({ params }: PageProps) => { } // const scheduleId = Number(params.schedule); - // const session = await getServerSessionForAppDir(); + // const session = await getServerSession({ req: buildLegacyRequest(headers(), cookies()) }); // const userId = session?.user?.id; // if (!userId) { // notFound(); diff --git a/apps/web/app/(use-page-wrapper)/availability/page.tsx b/apps/web/app/(use-page-wrapper)/availability/page.tsx index b57cb67683..ba6a4288c9 100644 --- a/apps/web/app/(use-page-wrapper)/availability/page.tsx +++ b/apps/web/app/(use-page-wrapper)/availability/page.tsx @@ -1,7 +1,9 @@ import { _generateMetadata } from "app/_utils"; +// import { cookies, headers } from "next/headers"; import { notFound } from "next/navigation"; -// import { getServerSessionForAppDir } from "@calcom/feature-auth/lib/get-server-session-for-app-dir"; +// import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; +// import { buildLegacyRequest } from "@lib/buildLegacyCtx"; // import { OrganizationRepository } from "@calcom/lib/server/repository/organization"; import AvailabilityPage from "~/availability/availability-view"; @@ -13,7 +15,7 @@ export const generateMetadata = async () => { }; const Page = async () => { - // const session = await getServerSessionForAppDir(); + // const session = await getServerSession({ req: buildLegacyRequest(headers(), cookies()) }); // const userId = session?.user?.id; // const orgId = session?.user?.org?.id; // if (!userId || !orgId) { diff --git a/apps/web/app/(use-page-wrapper)/event-types/page.tsx b/apps/web/app/(use-page-wrapper)/event-types/page.tsx index ab4a0f7e16..bc0d85e022 100644 --- a/apps/web/app/(use-page-wrapper)/event-types/page.tsx +++ b/apps/web/app/(use-page-wrapper)/event-types/page.tsx @@ -3,7 +3,7 @@ import { _generateMetadata } from "app/_utils"; import { cookies, headers } from "next/headers"; import { redirect } from "next/navigation"; -import { getServerSessionForAppDir } from "@calcom/features/auth/lib/get-server-session-for-app-dir"; +import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; import { buildLegacyCtx } from "@lib/buildLegacyCtx"; @@ -19,7 +19,7 @@ export const generateMetadata = async () => const Page = async ({ params, searchParams }: PageProps) => { const context = buildLegacyCtx(headers(), cookies(), params, searchParams); - const session = await getServerSessionForAppDir(); + const session = await getServerSession({ req: context.req }); if (!session?.user?.id) { redirect("/auth/login"); } diff --git a/apps/web/app/(use-page-wrapper)/workflows/[workflow]/page.tsx b/apps/web/app/(use-page-wrapper)/workflows/[workflow]/page.tsx index 590f3aee3e..2ab5411e09 100644 --- a/apps/web/app/(use-page-wrapper)/workflows/[workflow]/page.tsx +++ b/apps/web/app/(use-page-wrapper)/workflows/[workflow]/page.tsx @@ -5,7 +5,9 @@ import { notFound } from "next/navigation"; import { cache } from "react"; import { z } from "zod"; -// import { getServerSessionForAppDir } from "@calcom/feature-auth/lib/get-server-session-for-app-dir"; +// import { cookies, headers } from "next/headers"; +// import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; +// import { buildLegacyRequest } from "@lib/buildLegacyCtx"; import LegacyPage from "@calcom/features/ee/workflows/pages/workflow"; import { WorkflowRepository } from "@calcom/lib/server/repository/workflow"; @@ -38,8 +40,7 @@ export const generateMetadata = async ({ params }: PageProps): Promise []; const Page = async ({ params }: PageProps) => { - // FIXME: Refactor me once next-auth endpoint is migrated to App Router - // const session = await getServerSessionForAppDir(); + // const session = await getServerSession({ req: buildLegacyRequest(headers(), cookies()) }); // const user = session?.user; const parsed = querySchema.safeParse(params); if (!parsed.success) { diff --git a/apps/web/app/(use-page-wrapper)/workflows/page.tsx b/apps/web/app/(use-page-wrapper)/workflows/page.tsx index ea685fd9f2..cdf5b195f7 100644 --- a/apps/web/app/(use-page-wrapper)/workflows/page.tsx +++ b/apps/web/app/(use-page-wrapper)/workflows/page.tsx @@ -1,7 +1,9 @@ import type { PageProps } from "app/_types"; import { _generateMetadata } from "app/_utils"; -// import { getServerSessionForAppDir } from "@calcom/feature-auth/lib/get-server-session-for-app-dir"; +// import { cookies, headers } from "next/headers"; +// import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; +// import { buildLegacyRequest } from "@lib/buildLegacyCtx"; // import { getTeamsFiltersFromQuery } from "@calcom/features/filters/lib/getTeamsFiltersFromQuery"; // import { WorkflowRepository } from "@calcom/lib/server/repository/workflow"; import LegacyPage from "@calcom/features/ee/workflows/pages/index"; @@ -13,8 +15,7 @@ export const generateMetadata = async () => ); const Page = async ({ params, searchParams }: PageProps) => { - // FIXME: Refactor me once next-auth endpoint is migrated to App Router - // const session = await getServerSessionForAppDir(); + // const session = await getServerSession({ req: buildLegacyRequest(headers(), cookies()) }); // const user = session?.user; // const filters = getTeamsFiltersFromQuery({ ...searchParams, ...params }); diff --git a/apps/web/app/future/page.tsx b/apps/web/app/future/page.tsx index f82ff90851..6af803e9b2 100644 --- a/apps/web/app/future/page.tsx +++ b/apps/web/app/future/page.tsx @@ -1,9 +1,13 @@ +import { cookies, headers } from "next/headers"; import { redirect } from "next/navigation"; -import { getServerSessionForAppDir } from "@calcom/features/auth/lib/get-server-session-for-app-dir"; +import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; + +import { buildLegacyRequest } from "@lib/buildLegacyCtx"; const RedirectPage = async () => { - const session = await getServerSessionForAppDir(); + const session = await getServerSession({ req: buildLegacyRequest(headers(), cookies()) }); + if (!session?.user?.id) { redirect("/auth/login"); } diff --git a/apps/web/components/auth/layouts/AdminLayoutAppDir.tsx b/apps/web/app/settings/(admin-layout)/AdminLayoutAppDir.tsx similarity index 64% rename from apps/web/components/auth/layouts/AdminLayoutAppDir.tsx rename to apps/web/app/settings/(admin-layout)/AdminLayoutAppDir.tsx index 44ac10743a..a455f2f8f3 100644 --- a/apps/web/components/auth/layouts/AdminLayoutAppDir.tsx +++ b/apps/web/app/settings/(admin-layout)/AdminLayoutAppDir.tsx @@ -1,9 +1,12 @@ import dynamic from "next/dynamic"; +import { cookies, headers } from "next/headers"; import React from "react"; -import { getServerSessionForAppDir } from "@calcom/feature-auth/lib/get-server-session-for-app-dir"; -import SettingsLayoutAppDir from "@calcom/features/settings/appDir/SettingsLayoutAppDir"; +import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; +import { buildLegacyRequest } from "@lib/buildLegacyCtx"; + +import SettingsLayoutAppDir from "../(settings-layout)/SettingsLayoutAppDir"; import type { AdminLayoutProps } from "./AdminLayoutAppDirClient"; const AdminLayoutAppDirClient = dynamic(() => import("./AdminLayoutAppDirClient"), { @@ -13,8 +16,7 @@ const AdminLayoutAppDirClient = dynamic(() => import("./AdminLayoutAppDirClient" type AdminLayoutAppDirProps = Omit; export default async function AdminLayoutAppDir(props: AdminLayoutAppDirProps) { - // FIXME: Refactor me once next-auth endpoint is migrated to App Router - const session = await getServerSessionForAppDir(); + const session = await getServerSession({ req: buildLegacyRequest(headers(), cookies()) }); const userRole = session?.user?.role; return await SettingsLayoutAppDir({ children: }); diff --git a/apps/web/components/auth/layouts/AdminLayoutAppDirClient.tsx b/apps/web/app/settings/(admin-layout)/AdminLayoutAppDirClient.tsx similarity index 100% rename from apps/web/components/auth/layouts/AdminLayoutAppDirClient.tsx rename to apps/web/app/settings/(admin-layout)/AdminLayoutAppDirClient.tsx diff --git a/apps/web/app/settings/(admin-layout)/layout.tsx b/apps/web/app/settings/(admin-layout)/layout.tsx index 4a29db5abe..ef33662b93 100644 --- a/apps/web/app/settings/(admin-layout)/layout.tsx +++ b/apps/web/app/settings/(admin-layout)/layout.tsx @@ -1,5 +1,5 @@ import { WithLayout } from "app/layoutHOC"; -import { getLayout } from "@components/auth/layouts/AdminLayoutAppDir"; +import { getLayout } from "./AdminLayoutAppDir"; export default WithLayout({ getServerLayout: getLayout })<"L">; diff --git a/packages/features/settings/appDir/SettingsLayoutAppDir.tsx b/apps/web/app/settings/(settings-layout)/SettingsLayoutAppDir.tsx similarity index 79% rename from packages/features/settings/appDir/SettingsLayoutAppDir.tsx rename to apps/web/app/settings/(settings-layout)/SettingsLayoutAppDir.tsx index b7d750bb60..0fc271a394 100644 --- a/packages/features/settings/appDir/SettingsLayoutAppDir.tsx +++ b/apps/web/app/settings/(settings-layout)/SettingsLayoutAppDir.tsx @@ -1,9 +1,12 @@ import dynamic from "next/dynamic"; +import { cookies, headers } from "next/headers"; import React from "react"; -import { getServerSessionForAppDir } from "@calcom/feature-auth/lib/get-server-session-for-app-dir"; +import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; import { OrganizationRepository } from "@calcom/lib/server/repository/organization"; +import { buildLegacyRequest } from "@lib/buildLegacyCtx"; + import type { SettingsLayoutProps } from "./SettingsLayoutAppDirClient"; const SettingsLayoutAppDirClient = dynamic(() => import("./SettingsLayoutAppDirClient"), { @@ -13,7 +16,7 @@ const SettingsLayoutAppDirClient = dynamic(() => import("./SettingsLayoutAppDirC type SettingsLayoutAppDir = Omit; export default async function SettingsLayoutAppDir(props: SettingsLayoutAppDir) { - const session = await getServerSessionForAppDir(); + const session = await getServerSession({ req: buildLegacyRequest(headers(), cookies()) }); const userId = session?.user?.id ?? -1; const orgId = session?.user?.org?.id ?? -1; let currentOrg = null; diff --git a/packages/features/settings/appDir/SettingsLayoutAppDirClient.tsx b/apps/web/app/settings/(settings-layout)/SettingsLayoutAppDirClient.tsx similarity index 100% rename from packages/features/settings/appDir/SettingsLayoutAppDirClient.tsx rename to apps/web/app/settings/(settings-layout)/SettingsLayoutAppDirClient.tsx diff --git a/apps/web/app/settings/(settings-layout)/layout.tsx b/apps/web/app/settings/(settings-layout)/layout.tsx index 1e4a657288..9b882fff16 100644 --- a/apps/web/app/settings/(settings-layout)/layout.tsx +++ b/apps/web/app/settings/(settings-layout)/layout.tsx @@ -1,5 +1,5 @@ import { WithLayout } from "app/layoutHOC"; -import { getLayout } from "@calcom/features/settings/appDir/SettingsLayoutAppDir"; +import { getLayout } from "./SettingsLayoutAppDir"; export default WithLayout({ getServerLayout: getLayout })<"L">; diff --git a/apps/web/app/settings/organizations/members/page.tsx b/apps/web/app/settings/organizations/members/page.tsx index 8dd3218c6d..82af86f80b 100644 --- a/apps/web/app/settings/organizations/members/page.tsx +++ b/apps/web/app/settings/organizations/members/page.tsx @@ -3,7 +3,8 @@ import { WithLayout } from "app/layoutHOC"; import LegacyPage from "@calcom/features/ee/organizations/pages/members"; import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; -import SettingsLayoutAppDir from "@calcom/features/settings/appDir/SettingsLayoutAppDir"; + +import SettingsLayoutAppDir from "../../(settings-layout)/SettingsLayoutAppDir"; export const generateMetadata = async () => await _generateMetadata( diff --git a/apps/web/lib/buildLegacyCtx.tsx b/apps/web/lib/buildLegacyCtx.tsx index 22817f0cf6..73df2075e9 100644 --- a/apps/web/lib/buildLegacyCtx.tsx +++ b/apps/web/lib/buildLegacyCtx.tsx @@ -1,6 +1,6 @@ import type { SearchParams } from "app/_types"; import { type Params } from "app/_types"; -import type { GetServerSidePropsContext } from "next"; +import type { GetServerSidePropsContext, NextApiRequest } from "next"; import { type ReadonlyHeaders } from "next/dist/server/web/spec-extension/adapters/headers"; import { type ReadonlyRequestCookies } from "next/dist/server/web/spec-extension/adapters/request-cookies"; @@ -45,6 +45,10 @@ function decodeParams(params: Params): Params { }, {} as Params); } +export const buildLegacyRequest = (headers: ReadonlyHeaders, cookies: ReadonlyRequestCookies) => { + return { headers: buildLegacyHeaders(headers), cookies: buildLegacyCookies(cookies) } as NextApiRequest; +}; + export const buildLegacyCtx = ( headers: ReadonlyHeaders, cookies: ReadonlyRequestCookies, diff --git a/packages/features/auth/lib/get-server-session-for-app-dir.ts b/packages/features/auth/lib/get-server-session-for-app-dir.ts deleted file mode 100644 index 6c5b9a04e8..0000000000 --- a/packages/features/auth/lib/get-server-session-for-app-dir.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { getServerSession } from "next-auth"; -import { cookies } from "next/headers"; - -import { getOptions } from "./next-auth-options"; - -export async function getServerSessionForAppDir() { - return await getServerSession( - getOptions({ - getDubId: () => cookies().get("dub_id")?.value || cookies().get("dclid")?.value, - }) - ); -}