From 1a55f2d8e2f570a263a64434768200ba7beb3f6c Mon Sep 17 00:00:00 2001 From: Benny Joo Date: Tue, 29 Oct 2024 11:49:21 -0400 Subject: [PATCH] chore: `settings/admin` - remove pages router and use app router & add i18n to metadata (#16773) * remove pages router and use app router * remove testBothFutureAndLegacyRoutes for settings-admin e2e test * add i18n for metadata --- .env.example | 1 - apps/web/abTest/middlewareFactory.ts | 1 - .../settings/(admin)/admin/flags/page.tsx | 20 ------ .../settings/(admin)/admin/lockedSMS/page.tsx | 21 ------ .../settings/(admin)/admin/oAuth/page.tsx | 21 ------ .../settings/(admin)/admin/users/add/page.tsx | 20 ------ .../admin/apps/[category]/page.tsx | 0 .../(admin-layout)}/admin/apps/page.tsx | 0 .../(admin-layout)/admin/flags/page.tsx | 23 +++++++ .../admin/impersonation/page.tsx | 0 .../(admin-layout)/admin/lockedSMS/page.tsx | 24 +++++++ .../(admin-layout)/admin/oAuth/page.tsx | 24 +++++++ .../admin/organizations/[id]/edit/page.tsx | 18 +++--- .../admin/organizations/page.tsx | 0 .../(admin-layout)}/admin/page.tsx | 4 +- .../admin/users/[id]/edit/page.tsx | 15 +++-- .../(admin-layout)/admin/users/add/page.tsx | 24 +++++++ .../(admin-layout)}/admin/users/page.tsx | 15 +++-- .../(admin-layout)}/layout.tsx | 0 apps/web/middleware.ts | 1 - .../pages/settings/admin/apps/[category].tsx | 23 ------- apps/web/pages/settings/admin/apps/index.tsx | 2 - apps/web/pages/settings/admin/flags.tsx | 19 ------ .../pages/settings/admin/impersonation.tsx | 64 ------------------- apps/web/pages/settings/admin/index.tsx | 20 ------ .../pages/settings/admin/lockedSMS/index.tsx | 18 ------ apps/web/pages/settings/admin/oAuth/index.tsx | 18 ------ .../admin/organizations/[id]/edit.tsx | 40 ------------ .../settings/admin/organizations/index.tsx | 26 -------- .../pages/settings/admin/users/[id]/edit.tsx | 41 ------------ apps/web/pages/settings/admin/users/add.tsx | 16 ----- apps/web/pages/settings/admin/users/index.tsx | 28 -------- apps/web/playwright/settings-admin.e2e.ts | 3 +- apps/web/public/static/locales/en/common.json | 11 ++++ apps/web/scripts/vercel-app-router-deploy.sh | 1 - turbo.json | 1 - 36 files changed, 137 insertions(+), 426 deletions(-) delete mode 100644 apps/web/app/future/settings/(admin)/admin/flags/page.tsx delete mode 100644 apps/web/app/future/settings/(admin)/admin/lockedSMS/page.tsx delete mode 100644 apps/web/app/future/settings/(admin)/admin/oAuth/page.tsx delete mode 100644 apps/web/app/future/settings/(admin)/admin/users/add/page.tsx rename apps/web/app/{future/settings/(admin) => settings/(admin-layout)}/admin/apps/[category]/page.tsx (100%) rename apps/web/app/{future/settings/(admin) => settings/(admin-layout)}/admin/apps/page.tsx (100%) create mode 100644 apps/web/app/settings/(admin-layout)/admin/flags/page.tsx rename apps/web/app/{future/settings/(admin) => settings/(admin-layout)}/admin/impersonation/page.tsx (100%) create mode 100644 apps/web/app/settings/(admin-layout)/admin/lockedSMS/page.tsx create mode 100644 apps/web/app/settings/(admin-layout)/admin/oAuth/page.tsx rename apps/web/app/{future/settings/(admin) => settings/(admin-layout)}/admin/organizations/[id]/edit/page.tsx (69%) rename apps/web/app/{future/settings/(admin) => settings/(admin-layout)}/admin/organizations/page.tsx (100%) rename apps/web/app/{future/settings/(admin) => settings/(admin-layout)}/admin/page.tsx (79%) rename apps/web/app/{future/settings/(admin) => settings/(admin-layout)}/admin/users/[id]/edit/page.tsx (68%) create mode 100644 apps/web/app/settings/(admin-layout)/admin/users/add/page.tsx rename apps/web/app/{future/settings/(admin) => settings/(admin-layout)}/admin/users/page.tsx (60%) rename apps/web/app/{future/settings/(admin) => settings/(admin-layout)}/layout.tsx (100%) delete mode 100644 apps/web/pages/settings/admin/apps/[category].tsx delete mode 100644 apps/web/pages/settings/admin/apps/index.tsx delete mode 100644 apps/web/pages/settings/admin/flags.tsx delete mode 100644 apps/web/pages/settings/admin/impersonation.tsx delete mode 100644 apps/web/pages/settings/admin/index.tsx delete mode 100644 apps/web/pages/settings/admin/lockedSMS/index.tsx delete mode 100644 apps/web/pages/settings/admin/oAuth/index.tsx delete mode 100644 apps/web/pages/settings/admin/organizations/[id]/edit.tsx delete mode 100644 apps/web/pages/settings/admin/organizations/index.tsx delete mode 100644 apps/web/pages/settings/admin/users/[id]/edit.tsx delete mode 100644 apps/web/pages/settings/admin/users/add.tsx delete mode 100644 apps/web/pages/settings/admin/users/index.tsx diff --git a/.env.example b/.env.example index 32b0391f06..f3f4bc6b8c 100644 --- a/.env.example +++ b/.env.example @@ -334,7 +334,6 @@ AB_TEST_BUCKET_PROBABILITY=50 # whether we redirect to the future/event-types from event-types or not APP_ROUTER_EVENT_TYPES_ENABLED=0 APP_ROUTER_SETTINGS_DEVELOPER_ENABLED=0 -APP_ROUTER_SETTINGS_ADMIN_ENABLED=0 APP_ROUTER_SETTINGS_MY_ACCOUNT_ENABLED=0 APP_ROUTER_SETTINGS_PLATFORM_ENABLED=0 APP_ROUTER_SETTINGS_ORG_ENABLED=0 diff --git a/apps/web/abTest/middlewareFactory.ts b/apps/web/abTest/middlewareFactory.ts index f9437ae94a..b618813189 100644 --- a/apps/web/abTest/middlewareFactory.ts +++ b/apps/web/abTest/middlewareFactory.ts @@ -8,7 +8,6 @@ import { FUTURE_ROUTES_ENABLED_COOKIE_NAME, FUTURE_ROUTES_OVERRIDE_COOKIE_NAME } const ROUTES: [URLPattern, boolean][] = [ ["/event-types", process.env.APP_ROUTER_EVENT_TYPES_ENABLED === "1"] as const, ["/settings/developer/:path*", process.env.APP_ROUTER_SETTINGS_DEVELOPER_ENABLED === "1"] as const, - ["/settings/admin/:path*", process.env.APP_ROUTER_SETTINGS_ADMIN_ENABLED === "1"] as const, ["/settings/my-account/:path*", process.env.APP_ROUTER_SETTINGS_MY_ACCOUNT_ENABLED === "1"] as const, ["/settings/platform/:path*", process.env.APP_ROUTER_SETTINGS_PLATFORM_ENABLED === "1"] as const, ["/settings/organizations/:path*", process.env.APP_ROUTER_SETTINGS_ORG_ENABLED === "1"] as const, diff --git a/apps/web/app/future/settings/(admin)/admin/flags/page.tsx b/apps/web/app/future/settings/(admin)/admin/flags/page.tsx deleted file mode 100644 index 9322b5fd8e..0000000000 --- a/apps/web/app/future/settings/(admin)/admin/flags/page.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { _generateMetadata } from "app/_utils"; - -import { FlagListingView } from "@calcom/features/flags/pages/flag-listing-view"; -import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; - -export const generateMetadata = async () => - await _generateMetadata( - () => "Feature Flags", - () => "Here you can toggle your Cal.com instance features." - ); - -const Page = async () => { - return ( - - - - ); -}; - -export default Page; diff --git a/apps/web/app/future/settings/(admin)/admin/lockedSMS/page.tsx b/apps/web/app/future/settings/(admin)/admin/lockedSMS/page.tsx deleted file mode 100644 index 9be28b5a4c..0000000000 --- a/apps/web/app/future/settings/(admin)/admin/lockedSMS/page.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { _generateMetadata } from "app/_utils"; - -import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; - -import LockedSMSView from "~/settings/admin/locked-sms-view"; - -export const generateMetadata = async () => - await _generateMetadata( - () => "Locked SMS", - () => "Lock or unlock SMS sending for users" - ); - -const Page = () => { - return ( - - - - ); -}; - -export default Page; diff --git a/apps/web/app/future/settings/(admin)/admin/oAuth/page.tsx b/apps/web/app/future/settings/(admin)/admin/oAuth/page.tsx deleted file mode 100644 index 158965294d..0000000000 --- a/apps/web/app/future/settings/(admin)/admin/oAuth/page.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { _generateMetadata } from "app/_utils"; - -import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; - -import LegacyPage from "~/settings/admin/oauth-view"; - -export const generateMetadata = async () => - await _generateMetadata( - () => "OAuth", - () => "Add new OAuth Clients" - ); - -const Page = () => { - return ( - - - - ); -}; - -export default Page; diff --git a/apps/web/app/future/settings/(admin)/admin/users/add/page.tsx b/apps/web/app/future/settings/(admin)/admin/users/add/page.tsx deleted file mode 100644 index ee1aeb04c0..0000000000 --- a/apps/web/app/future/settings/(admin)/admin/users/add/page.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { _generateMetadata } from "app/_utils"; - -import UsersAddView from "@calcom/features/ee/users/pages/users-add-view"; -import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; - -export const generateMetadata = async () => - await _generateMetadata( - () => "Add new user", - () => "Here you can add a new user." - ); - -const Page = () => { - return ( - - - - ); -}; - -export default Page; diff --git a/apps/web/app/future/settings/(admin)/admin/apps/[category]/page.tsx b/apps/web/app/settings/(admin-layout)/admin/apps/[category]/page.tsx similarity index 100% rename from apps/web/app/future/settings/(admin)/admin/apps/[category]/page.tsx rename to apps/web/app/settings/(admin-layout)/admin/apps/[category]/page.tsx diff --git a/apps/web/app/future/settings/(admin)/admin/apps/page.tsx b/apps/web/app/settings/(admin-layout)/admin/apps/page.tsx similarity index 100% rename from apps/web/app/future/settings/(admin)/admin/apps/page.tsx rename to apps/web/app/settings/(admin-layout)/admin/apps/page.tsx diff --git a/apps/web/app/settings/(admin-layout)/admin/flags/page.tsx b/apps/web/app/settings/(admin-layout)/admin/flags/page.tsx new file mode 100644 index 0000000000..fc4ae1af2b --- /dev/null +++ b/apps/web/app/settings/(admin-layout)/admin/flags/page.tsx @@ -0,0 +1,23 @@ +import { _generateMetadata, getFixedT } from "app/_utils"; + +import { getServerSessionForAppDir } from "@calcom/features/auth/lib/get-server-session-for-app-dir"; +import { FlagListingView } from "@calcom/features/flags/pages/flag-listing-view"; +import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; + +export const generateMetadata = async () => + await _generateMetadata( + (t) => t("feature_flags"), + (t) => t("admin_flags_description") + ); + +const Page = async () => { + const session = await getServerSessionForAppDir(); + const t = await getFixedT(session?.user.locale || "en"); + return ( + + + + ); +}; + +export default Page; diff --git a/apps/web/app/future/settings/(admin)/admin/impersonation/page.tsx b/apps/web/app/settings/(admin-layout)/admin/impersonation/page.tsx similarity index 100% rename from apps/web/app/future/settings/(admin)/admin/impersonation/page.tsx rename to apps/web/app/settings/(admin-layout)/admin/impersonation/page.tsx diff --git a/apps/web/app/settings/(admin-layout)/admin/lockedSMS/page.tsx b/apps/web/app/settings/(admin-layout)/admin/lockedSMS/page.tsx new file mode 100644 index 0000000000..16b8a20ec7 --- /dev/null +++ b/apps/web/app/settings/(admin-layout)/admin/lockedSMS/page.tsx @@ -0,0 +1,24 @@ +import { _generateMetadata, getFixedT } from "app/_utils"; + +import { getServerSessionForAppDir } from "@calcom/features/auth/lib/get-server-session-for-app-dir"; +import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; + +import LockedSMSView from "~/settings/admin/locked-sms-view"; + +export const generateMetadata = async () => + await _generateMetadata( + (t) => t("lockedSMS"), + (t) => t("admin_lockedSMS_description") + ); + +const Page = async () => { + const session = await getServerSessionForAppDir(); + const t = await getFixedT(session?.user.locale || "en"); + return ( + + + + ); +}; + +export default Page; diff --git a/apps/web/app/settings/(admin-layout)/admin/oAuth/page.tsx b/apps/web/app/settings/(admin-layout)/admin/oAuth/page.tsx new file mode 100644 index 0000000000..96d1586673 --- /dev/null +++ b/apps/web/app/settings/(admin-layout)/admin/oAuth/page.tsx @@ -0,0 +1,24 @@ +import { _generateMetadata, getFixedT } from "app/_utils"; + +import { getServerSessionForAppDir } from "@calcom/features/auth/lib/get-server-session-for-app-dir"; +import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; + +import LegacyPage from "~/settings/admin/oauth-view"; + +export const generateMetadata = async () => + await _generateMetadata( + (t) => t("oAuth"), + (t) => t("admin_oAuth_description") + ); + +const Page = async () => { + const session = await getServerSessionForAppDir(); + const t = await getFixedT(session?.user.locale || "en"); + return ( + + + + ); +}; + +export default Page; diff --git a/apps/web/app/future/settings/(admin)/admin/organizations/[id]/edit/page.tsx b/apps/web/app/settings/(admin-layout)/admin/organizations/[id]/edit/page.tsx similarity index 69% rename from apps/web/app/future/settings/(admin)/admin/organizations/[id]/edit/page.tsx rename to apps/web/app/settings/(admin-layout)/admin/organizations/[id]/edit/page.tsx index 1e94efb817..8636e4eefc 100644 --- a/apps/web/app/future/settings/(admin)/admin/organizations/[id]/edit/page.tsx +++ b/apps/web/app/settings/(admin-layout)/admin/organizations/[id]/edit/page.tsx @@ -1,8 +1,9 @@ import { type Params } from "app/_types"; -import { _generateMetadata } from "app/_utils"; +import { _generateMetadata, getFixedT } from "app/_utils"; import { notFound } from "next/navigation"; import { z } from "zod"; +import { getServerSessionForAppDir } from "@calcom/features/auth/lib/get-server-session-for-app-dir"; import LicenseRequired from "@calcom/features/ee/common/components/LicenseRequired"; import { OrgForm } from "@calcom/features/ee/organizations/pages/settings/admin/AdminOrgEditPage"; import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; @@ -14,16 +15,16 @@ export const generateMetadata = async ({ params }: { params: Params }) => { const input = orgIdSchema.safeParse(params); if (!input.success) { return await _generateMetadata( - () => `Editing organization`, - () => "Here you can edit an organization." + (t) => t("editing_org"), + (t) => t("admin_orgs_edit_description") ); } const org = await OrganizationRepository.adminFindById({ id: input.data.id }); return await _generateMetadata( - () => `Editing organization: ${org.name}`, - () => "Here you can edit an organization." + (t) => `${t("editing_org")}: ${org.name}`, + (t) => t("admin_orgs_edit_description") ); }; @@ -34,11 +35,12 @@ const Page = async ({ params }: { params: Params }) => { try { const org = await OrganizationRepository.adminFindById({ id: input.data.id }); - + const session = await getServerSessionForAppDir(); + const t = await getFixedT(session?.user.locale || "en"); return ( + title={`${t("editing_org")}: ${org.name}`} + description={t("admin_orgs_edit_description")}> diff --git a/apps/web/app/future/settings/(admin)/admin/organizations/page.tsx b/apps/web/app/settings/(admin-layout)/admin/organizations/page.tsx similarity index 100% rename from apps/web/app/future/settings/(admin)/admin/organizations/page.tsx rename to apps/web/app/settings/(admin-layout)/admin/organizations/page.tsx diff --git a/apps/web/app/future/settings/(admin)/admin/page.tsx b/apps/web/app/settings/(admin-layout)/admin/page.tsx similarity index 79% rename from apps/web/app/future/settings/(admin)/admin/page.tsx rename to apps/web/app/settings/(admin-layout)/admin/page.tsx index 4efacc89bb..4f4fb938ec 100644 --- a/apps/web/app/future/settings/(admin)/admin/page.tsx +++ b/apps/web/app/settings/(admin-layout)/admin/page.tsx @@ -2,8 +2,8 @@ import { _generateMetadata } from "app/_utils"; export const generateMetadata = async () => await _generateMetadata( - () => "Admin", - () => "admin_description" + (t) => t("admin"), + () => "" ); const Page = () =>

Admin index

; diff --git a/apps/web/app/future/settings/(admin)/admin/users/[id]/edit/page.tsx b/apps/web/app/settings/(admin-layout)/admin/users/[id]/edit/page.tsx similarity index 68% rename from apps/web/app/future/settings/(admin)/admin/users/[id]/edit/page.tsx rename to apps/web/app/settings/(admin-layout)/admin/users/[id]/edit/page.tsx index 6e554b1973..6af8d21634 100644 --- a/apps/web/app/future/settings/(admin)/admin/users/[id]/edit/page.tsx +++ b/apps/web/app/settings/(admin-layout)/admin/users/[id]/edit/page.tsx @@ -1,8 +1,9 @@ import { type Params } from "app/_types"; -import { _generateMetadata } from "app/_utils"; +import { _generateMetadata, getFixedT } from "app/_utils"; import { notFound } from "next/navigation"; import { z } from "zod"; +import { getServerSessionForAppDir } from "@calcom/features/auth/lib/get-server-session-for-app-dir"; import LicenseRequired from "@calcom/features/ee/common/components/LicenseRequired"; import { UsersEditView } from "@calcom/features/ee/users/pages/users-edit-view"; import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; @@ -14,16 +15,16 @@ export const generateMetadata = async ({ params }: { params: Params }) => { const input = userIdSchema.safeParse(params); if (!input.success) { return await _generateMetadata( - () => `Editing user`, - () => "Here you can edit a current user." + (t) => t("editing_user"), + (t) => t("admin_users_edit_description") ); } const user = await UserRepository.adminFindById(input.data.id); return await _generateMetadata( - () => `Editing user: ${user.username}`, - () => "Here you can edit a current user." + (t) => `${t("editing_user")}: ${user.username}`, + (t) => t("admin_users_edit_description") ); }; @@ -36,9 +37,11 @@ const Page = async ({ params }: { params: Params }) => { try { const user = await UserRepository.adminFindById(input.data.id); + const session = await getServerSessionForAppDir(); + const t = await getFixedT(session?.user.locale || "en"); return ( - + diff --git a/apps/web/app/settings/(admin-layout)/admin/users/add/page.tsx b/apps/web/app/settings/(admin-layout)/admin/users/add/page.tsx new file mode 100644 index 0000000000..85099b7bfe --- /dev/null +++ b/apps/web/app/settings/(admin-layout)/admin/users/add/page.tsx @@ -0,0 +1,24 @@ +import { _generateMetadata, getFixedT } from "app/_utils"; + +import { getServerSessionForAppDir } from "@calcom/features/auth/lib/get-server-session-for-app-dir"; +import UsersAddView from "@calcom/features/ee/users/pages/users-add-view"; +import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; + +export const generateMetadata = async () => + await _generateMetadata( + (t) => t("add_new_user"), + (t) => t("admin_users_add_description") + ); + +const Page = async () => { + const session = await getServerSessionForAppDir(); + const t = await getFixedT(session?.user.locale || "en"); + + return ( + + + + ); +}; + +export default Page; diff --git a/apps/web/app/future/settings/(admin)/admin/users/page.tsx b/apps/web/app/settings/(admin-layout)/admin/users/page.tsx similarity index 60% rename from apps/web/app/future/settings/(admin)/admin/users/page.tsx rename to apps/web/app/settings/(admin-layout)/admin/users/page.tsx index 26fb4f30d1..844474a746 100644 --- a/apps/web/app/future/settings/(admin)/admin/users/page.tsx +++ b/apps/web/app/settings/(admin-layout)/admin/users/page.tsx @@ -1,20 +1,23 @@ -import { _generateMetadata } from "app/_utils"; +import { _generateMetadata, getFixedT } from "app/_utils"; +import { getServerSessionForAppDir } from "@calcom/features/auth/lib/get-server-session-for-app-dir"; import UsersListingView from "@calcom/features/ee/users/pages/users-listing-view"; import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; import { Button } from "@calcom/ui"; export const generateMetadata = async () => await _generateMetadata( - () => "Users", - () => "A list of all the users in your account including their name, title, email and role." + (t) => t("users"), + (t) => t("admin_users_description") ); -const Page = () => { +const Page = async () => { + const session = await getServerSessionForAppDir(); + const t = await getFixedT(session?.user.locale || "en"); return ( {/* TODO: Add import users functionality */} diff --git a/apps/web/app/future/settings/(admin)/layout.tsx b/apps/web/app/settings/(admin-layout)/layout.tsx similarity index 100% rename from apps/web/app/future/settings/(admin)/layout.tsx rename to apps/web/app/settings/(admin-layout)/layout.tsx diff --git a/apps/web/middleware.ts b/apps/web/middleware.ts index 7e94fe4c6d..d86c4662b1 100644 --- a/apps/web/middleware.ts +++ b/apps/web/middleware.ts @@ -167,7 +167,6 @@ export const config = { "/event-types", "/future/event-types/", "/settings/admin/:path*", - "/future/settings/admin/:path*", "/apps/installed/:category/", "/future/apps/installed/:category/", "/apps/:slug/", diff --git a/apps/web/pages/settings/admin/apps/[category].tsx b/apps/web/pages/settings/admin/apps/[category].tsx deleted file mode 100644 index 59945469b7..0000000000 --- a/apps/web/pages/settings/admin/apps/[category].tsx +++ /dev/null @@ -1,23 +0,0 @@ -"use client"; - -import AdminAppsList from "@calcom/features/apps/AdminAppsList"; -import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Meta } from "@calcom/ui"; - -import PageWrapper from "@components/PageWrapper"; -import { getLayout } from "@components/auth/layouts/AdminLayout"; - -function AdminAppsView() { - const { t } = useLocale(); - return ( - <> - - - - ); -} - -AdminAppsView.getLayout = getLayout; -AdminAppsView.PageWrapper = PageWrapper; - -export default AdminAppsView; diff --git a/apps/web/pages/settings/admin/apps/index.tsx b/apps/web/pages/settings/admin/apps/index.tsx deleted file mode 100644 index 26606937d8..0000000000 --- a/apps/web/pages/settings/admin/apps/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -"use client"; -export { default } from "./[category]"; diff --git a/apps/web/pages/settings/admin/flags.tsx b/apps/web/pages/settings/admin/flags.tsx deleted file mode 100644 index e898c79af2..0000000000 --- a/apps/web/pages/settings/admin/flags.tsx +++ /dev/null @@ -1,19 +0,0 @@ -"use client"; - -import { FlagListingView } from "@calcom/features/flags/pages/flag-listing-view"; -import { Meta } from "@calcom/ui"; - -import PageWrapper from "@components/PageWrapper"; -import { getLayout } from "@components/auth/layouts/AdminLayout"; - -const FlagsPage = () => ( -
- - -
-); - -FlagsPage.getLayout = getLayout; -FlagsPage.PageWrapper = PageWrapper; - -export default FlagsPage; diff --git a/apps/web/pages/settings/admin/impersonation.tsx b/apps/web/pages/settings/admin/impersonation.tsx deleted file mode 100644 index d46f7581cd..0000000000 --- a/apps/web/pages/settings/admin/impersonation.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import { signIn } from "next-auth/react"; -import { useSearchParams } from "next/navigation"; -import { useRef, useEffect } from "react"; - -import { WEBAPP_URL } from "@calcom/lib/constants"; -import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Button, Meta, TextField } from "@calcom/ui"; - -import PageWrapper from "@components/PageWrapper"; -import { getLayout } from "@components/auth/layouts/AdminLayout"; - -function AdminView() { - const { t } = useLocale(); - const usernameRef = useRef(null); - const searchParams = useSearchParams(); - - const username = searchParams?.get("username")?.toLowerCase(); - - useEffect(() => { - if (username) { - const enteredUsername = username.toLowerCase(); - signIn("impersonation-auth", { - username: enteredUsername, - callbackUrl: `${WEBAPP_URL}/event-types`, - }); - } - }, [username]); - - return ( - <> - -
{ - e.preventDefault(); - const enteredUsername = usernameRef.current?.value.toLowerCase(); - signIn("impersonation-auth", { - username: enteredUsername, - callbackUrl: `${WEBAPP_URL}/event-types`, - }); - }}> -
- {process.env.NEXT_PUBLIC_WEBSITE_URL}/} - ref={usernameRef} - hint={t("impersonate_user_tip")} - defaultValue={undefined} - data-testid="admin-impersonation-input" - /> - -
-
- - ); -} - -AdminView.getLayout = getLayout; -AdminView.PageWrapper = PageWrapper; - -export default AdminView; diff --git a/apps/web/pages/settings/admin/index.tsx b/apps/web/pages/settings/admin/index.tsx deleted file mode 100644 index 2193253fda..0000000000 --- a/apps/web/pages/settings/admin/index.tsx +++ /dev/null @@ -1,20 +0,0 @@ -"use client"; - -import { Meta } from "@calcom/ui"; - -import PageWrapper from "@components/PageWrapper"; -import { getLayout } from "@components/auth/layouts/AdminLayout"; - -function AdminAppsView() { - return ( - <> - -

Admin index

- - ); -} - -AdminAppsView.getLayout = getLayout; -AdminAppsView.PageWrapper = PageWrapper; - -export default AdminAppsView; diff --git a/apps/web/pages/settings/admin/lockedSMS/index.tsx b/apps/web/pages/settings/admin/lockedSMS/index.tsx deleted file mode 100644 index d10422dc32..0000000000 --- a/apps/web/pages/settings/admin/lockedSMS/index.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { Meta } from "@calcom/ui"; - -import PageWrapper from "@components/PageWrapper"; -import { getLayout } from "@components/auth/layouts/AdminLayout"; - -import LockedSMSView from "~/settings/admin/locked-sms-view"; - -const LockedSMSPage = () => ( - <> - - - -); - -LockedSMSPage.getLayout = getLayout; -LockedSMSPage.PageWrapper = PageWrapper; - -export default LockedSMSPage; diff --git a/apps/web/pages/settings/admin/oAuth/index.tsx b/apps/web/pages/settings/admin/oAuth/index.tsx deleted file mode 100644 index 0307086f32..0000000000 --- a/apps/web/pages/settings/admin/oAuth/index.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { Meta } from "@calcom/ui"; - -import PageWrapper from "@components/PageWrapper"; -import { getLayout } from "@components/auth/layouts/AdminLayout"; - -import OAuthView from "~/settings/admin/oauth-view"; - -const OAuthPage = () => ( - <> - - - -); - -OAuthPage.getLayout = getLayout; -OAuthPage.PageWrapper = PageWrapper; - -export default OAuthPage; diff --git a/apps/web/pages/settings/admin/organizations/[id]/edit.tsx b/apps/web/pages/settings/admin/organizations/[id]/edit.tsx deleted file mode 100644 index cb60a65ecd..0000000000 --- a/apps/web/pages/settings/admin/organizations/[id]/edit.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import { z } from "zod"; - -import NoSSR from "@calcom/core/components/NoSSR"; -import LicenseRequired from "@calcom/ee/common/components/LicenseRequired"; -import OrgForm from "@calcom/features/ee/organizations/pages/settings/admin/AdminOrgEditPage"; -import { useParamsWithFallback } from "@calcom/lib/hooks/useParamsWithFallback"; -import { trpc } from "@calcom/trpc/react"; -import { Meta } from "@calcom/ui"; - -import PageWrapper from "@components/PageWrapper"; -import { getLayout } from "@components/auth/layouts/AdminLayout"; - -const paramsSchema = z.object({ id: z.coerce.number() }); - -const Page = () => { - const params = useParamsWithFallback(); - const parsedParams = paramsSchema.safeParse(params); - - if (!parsedParams.success) return
Invalid id
; - - const [org] = trpc.viewer.organizations.adminGet.useSuspenseQuery({ id: parsedParams.data.id }); - - return ( -
- - - - - - -
- ); -}; -Page.PageWrapper = PageWrapper; -Page.getLayout = getLayout; - -export default Page; diff --git a/apps/web/pages/settings/admin/organizations/index.tsx b/apps/web/pages/settings/admin/organizations/index.tsx deleted file mode 100644 index b5ff176b3e..0000000000 --- a/apps/web/pages/settings/admin/organizations/index.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import NoSSR from "@calcom/core/components/NoSSR"; -import LicenseRequired from "@calcom/ee/common/components/LicenseRequired"; -import AdminOrgTable from "@calcom/features/ee/organizations/pages/settings/admin/AdminOrgPage"; -import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Meta } from "@calcom/ui"; - -import PageWrapper from "@components/PageWrapper"; -import { getLayout } from "@components/auth/layouts/AdminLayout"; - -const Page = () => { - const { t } = useLocale(); - return ( -
- - - - - - -
- ); -}; -Page.PageWrapper = PageWrapper; -Page.getLayout = getLayout; - -export default Page; diff --git a/apps/web/pages/settings/admin/users/[id]/edit.tsx b/apps/web/pages/settings/admin/users/[id]/edit.tsx deleted file mode 100644 index 9b99ded74f..0000000000 --- a/apps/web/pages/settings/admin/users/[id]/edit.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { z } from "zod"; - -import NoSSR from "@calcom/core/components/NoSSR"; -import LicenseRequired from "@calcom/ee/common/components/LicenseRequired"; -import UsersEditView from "@calcom/features/ee/users/pages/users-edit-view"; -import { useParamsWithFallback } from "@calcom/lib/hooks/useParamsWithFallback"; -import { trpc } from "@calcom/trpc/react"; -import { Meta } from "@calcom/ui"; - -import PageWrapper from "@components/PageWrapper"; -import { getLayout } from "@components/auth/layouts/AdminLayout"; - -const userIdSchema = z.object({ id: z.coerce.number() }); - -const Page = () => { - const params = useParamsWithFallback(); - const input = userIdSchema.safeParse(params); - - if (!input.success) return
Invalid input
; - - const [data] = trpc.viewer.users.get.useSuspenseQuery({ userId: input.data.id }); - const { user } = data; - - return ( - <> - -
- - - - - -
- - ); -}; - -Page.PageWrapper = PageWrapper; -Page.getLayout = getLayout; - -export default Page; diff --git a/apps/web/pages/settings/admin/users/add.tsx b/apps/web/pages/settings/admin/users/add.tsx deleted file mode 100644 index ce2911b232..0000000000 --- a/apps/web/pages/settings/admin/users/add.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import UsersAddView from "@calcom/features/ee/users/pages/users-add-view"; -import { Meta } from "@calcom/ui"; - -import PageWrapper from "@components/PageWrapper"; -import { getLayout } from "@components/auth/layouts/AdminLayout"; - -const Page = () => ( - <> - - - -); -Page.PageWrapper = PageWrapper; -Page.getLayout = getLayout; - -export default Page; diff --git a/apps/web/pages/settings/admin/users/index.tsx b/apps/web/pages/settings/admin/users/index.tsx deleted file mode 100644 index 8a74ba8a10..0000000000 --- a/apps/web/pages/settings/admin/users/index.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import UsersListingView from "@calcom/features/ee/users/pages/users-listing-view"; -import { Meta, Button } from "@calcom/ui"; - -import PageWrapper from "@components/PageWrapper"; -import { getLayout } from "@components/auth/layouts/AdminLayout"; - -const Page = () => { - return ( - <> - - {/* TODO: Add import users functionality */} - {/* */} - - - } - /> - - - ); -}; -Page.PageWrapper = PageWrapper; -Page.getLayout = getLayout; - -export default Page; diff --git a/apps/web/playwright/settings-admin.e2e.ts b/apps/web/playwright/settings-admin.e2e.ts index c1567b4ce0..3df06eda63 100644 --- a/apps/web/playwright/settings-admin.e2e.ts +++ b/apps/web/playwright/settings-admin.e2e.ts @@ -1,11 +1,10 @@ import { expect } from "@playwright/test"; import { test } from "./lib/fixtures"; -import { testBothFutureAndLegacyRoutes } from "./lib/future-legacy-routes"; test.describe.configure({ mode: "parallel" }); -testBothFutureAndLegacyRoutes.describe("Settings/admin tests", () => { +test.describe("Settings/admin tests", () => { test("should render /settings/admin page", async ({ page, users, context }) => { const user = await users.create({ role: "ADMIN", diff --git a/apps/web/public/static/locales/en/common.json b/apps/web/public/static/locales/en/common.json index c0a683edb8..8bf40d22c0 100644 --- a/apps/web/public/static/locales/en/common.json +++ b/apps/web/public/static/locales/en/common.json @@ -634,6 +634,8 @@ "role": "Role", "edit_role": "Edit Role", "edit_team": "Edit team", + "editing_user": "Editing user", + "editing_org": "Editing organization", "reject": "Reject", "reject_all": "Reject all", "accept": "Accept", @@ -992,6 +994,8 @@ "access_token": "Access token", "visit_roadmap": "Roadmap", "featured_categories": "Featured Categories", + "feature_flags": "Feature Flags", + "admin_flags_description": "Here you can toggle your Cal.com instance features.", "popular_categories": "Popular Categories", "number_apps_one": "{{count}} App", "number_apps_other": "{{count}} Apps", @@ -1761,6 +1765,12 @@ "disable_app_description": "Disabling this app could cause problems with how your users interact with Cal", "edit_keys": "Edit Keys", "admin_apps_description": "Enable apps for your instance of Cal", + "admin_users_description": "A list of all the users in your account including their name, title, email and role.", + "admin_users_add_description": "Here you can add a new user.", + "admin_users_edit_description": "Here you can edit a current user.", + "admin_orgs_edit_description": "Here you can edit an organization.", + "admin_oAuth_description": "Add new OAuth Clients", + "admin_lockedSMS_description": "Lock or unlock SMS sending for users", "no_available_apps": "There are no available apps", "no_available_apps_description": "Please ensure there are apps in your deployment under 'packages/app-store'", "no_apps": "There are no apps enabled in this instance of Cal", @@ -2320,6 +2330,7 @@ "add_client": "Add client", "copy_client_secret_info": "After copying the secret you won't be able to view it anymore", "add_new_client": "Add new Client", + "add_new_user": "Add new user", "this_app_is_not_setup_already": "This app has not been setup yet", "as_csv": "as CSV", "overlay_my_calendar": "Overlay my calendar", diff --git a/apps/web/scripts/vercel-app-router-deploy.sh b/apps/web/scripts/vercel-app-router-deploy.sh index 05d39d1869..442d193082 100755 --- a/apps/web/scripts/vercel-app-router-deploy.sh +++ b/apps/web/scripts/vercel-app-router-deploy.sh @@ -9,7 +9,6 @@ checkRoute () { checkRoute "$APP_ROUTER_EVENT_TYPES_ENABLED" app/future/event-types checkRoute "$APP_ROUTER_AVAILABILITY_ENABLED" app/future/availability checkRoute "$APP_ROUTER_SETTINGS_DEVELOPER_ENABLED" app/future/settings/developer -checkRoute "$APP_ROUTER_SETTINGS_ADMIN_ENABLED" app/future/settings/admin checkRoute "$APP_ROUTER_SETTINGS_MY_ACCOUNT_ENABLED" app/future/settings/my-account checkRoute "$APP_ROUTER_SETTINGS_PLATFORM_ENABLED" app/future/settings/platform checkRoute "$APP_ROUTER_SETTINGS_ORG_ENABLED" app/future/settings/organizations diff --git a/turbo.json b/turbo.json index f4f7b5120e..da1c670b34 100644 --- a/turbo.json +++ b/turbo.json @@ -238,7 +238,6 @@ "APP_ROUTER_EVENT_TYPES_ENABLED", "APP_ROUTER_GETTING_STARTED_STEP_ENABLED", "APP_ROUTER_SETTINGS_DEVELOPER_ENABLED", - "APP_ROUTER_SETTINGS_ADMIN_ENABLED", "APP_ROUTER_SETTINGS_MY_ACCOUNT_ENABLED", "APP_ROUTER_SETTINGS_PLATFORM_ENABLED", "APP_ROUTER_SETTINGS_ORG_ENABLED",