diff --git a/apps/web/app/routes/admin.tsx b/apps/web/app/routes/admin.tsx index 11d668690..6a5c03c66 100644 --- a/apps/web/app/routes/admin.tsx +++ b/apps/web/app/routes/admin.tsx @@ -3,6 +3,15 @@ import type { MetaFunction } from "@remix-run/node"; import { Outlet } from "@remix-run/react"; import type { SitemapFunction } from "remix-sitemap"; +import { redirectToAuth } from "../lib/auth"; +import { makeIsomorphicLoader } from "../lib/isomorphicLoader"; + +export const { loader, clientLoader } = makeIsomorphicLoader( + async ({ request, context: { user } }) => { + if (!user?.admin) return redirectToAuth({ request }); + return null; + }, +); export const sitemap: SitemapFunction = () => ({ exclude: true, diff --git a/apps/web/app/routes/admin_.sites_.$siteId_.edit.tsx b/apps/web/app/routes/admin_.sites_.$siteId_.edit.tsx index d37998fdc..c7a5fffce 100644 --- a/apps/web/app/routes/admin_.sites_.$siteId_.edit.tsx +++ b/apps/web/app/routes/admin_.sites_.$siteId_.edit.tsx @@ -8,6 +8,13 @@ import invariant from "tiny-invariant"; import SiteForm from "../components/admin/siteForm"; import { trpc } from "../lib/trpc"; +export const { loader, clientLoader } = makeIsomorphicLoader( + async ({ request, context: { user } }) => { + if (!user?.admin) return redirectToAuth({ request }); + return null; + }, +); + export const sitemap: SitemapFunction = () => ({ exclude: true, }); diff --git a/apps/web/app/routes/admin_.sites_.add_._index.tsx b/apps/web/app/routes/admin_.sites_.add_._index.tsx index 0e4097b2a..bbb7642c0 100644 --- a/apps/web/app/routes/admin_.sites_.add_._index.tsx +++ b/apps/web/app/routes/admin_.sites_.add_._index.tsx @@ -4,6 +4,13 @@ import type { SitemapFunction } from "remix-sitemap"; import SiteForm from "../components/admin/siteForm"; import { trpc } from "../lib/trpc"; +export const { loader, clientLoader } = makeIsomorphicLoader( + async ({ request, context: { user } }) => { + if (!user?.admin) return redirectToAuth({ request }); + return null; + }, +); + export const sitemap: SitemapFunction = () => ({ exclude: true, });