diff --git a/apps/web/src/routes/_protected/community.tsx b/apps/web/src/routes/_main/community.tsx similarity index 73% rename from apps/web/src/routes/_protected/community.tsx rename to apps/web/src/routes/_main/community.tsx index d9d0dbf0..be4533c4 100644 --- a/apps/web/src/routes/_protected/community.tsx +++ b/apps/web/src/routes/_main/community.tsx @@ -1,6 +1,6 @@ import { createFileRoute } from "@tanstack/react-router"; -export const Route = createFileRoute("/_protected/community")({ +export const Route = createFileRoute("/_main/community")({ component: RouteComponent, }); diff --git a/apps/web/src/routes/_protected/layout.tsx b/apps/web/src/routes/_main/layout.tsx similarity index 77% rename from apps/web/src/routes/_protected/layout.tsx rename to apps/web/src/routes/_main/layout.tsx index 70509fd6..90012786 100644 --- a/apps/web/src/routes/_protected/layout.tsx +++ b/apps/web/src/routes/_main/layout.tsx @@ -4,15 +4,17 @@ import { Outlet, redirect, useLocation, + useRouter, } from "@tanstack/react-router"; import TablerLayoutCollage from "~icons/tabler/layout-collage"; import TablerBooks from "~icons/tabler/books"; import TablerSocial from "~icons/tabler/social"; import { AppShell } from "@/components/AppShell/AppShell"; +import { Link } from "react-aria-components"; // This layout component performs authentication checks before the user can access protected pages -export const Route = createFileRoute("/_protected")({ - beforeLoad: async ({ context }) => { +export const Route = createFileRoute("/_main")({ + beforeLoad: async ({ context, location }) => { const { user, error } = await context.userQuery.promise; // Unauthenticated, return to login page @@ -44,7 +46,9 @@ export const Route = createFileRoute("/_protected")({ }); function RouteComponent() { + const { user } = Route.useRouteContext(); const pathname = useLocation({ select: (loc) => loc.pathname }); + const router = useRouter(); return ( @@ -52,10 +56,20 @@ function RouteComponent() {

SwampHacks

- +
+ {user?.role === "superuser" && ( + router.navigate({ to: "/admin" })} + className="text-sm text-blue-500 select-none cursor-pointer hover:underline" + > + To Admin Portal + + )} + +
diff --git a/apps/web/src/routes/_protected/portal.tsx b/apps/web/src/routes/_main/portal.tsx similarity index 89% rename from apps/web/src/routes/_protected/portal.tsx rename to apps/web/src/routes/_main/portal.tsx index 50f34259..6e7e9725 100644 --- a/apps/web/src/routes/_protected/portal.tsx +++ b/apps/web/src/routes/_main/portal.tsx @@ -2,7 +2,7 @@ import { Button } from "@/components/ui/Button"; import { auth } from "@/lib/authClient"; import { createFileRoute } from "@tanstack/react-router"; -export const Route = createFileRoute("/_protected/portal")({ +export const Route = createFileRoute("/_main/portal")({ component: RouteComponent, }); diff --git a/apps/web/src/routes/_protected/resources/programming.tsx b/apps/web/src/routes/_main/resources/programming.tsx similarity index 71% rename from apps/web/src/routes/_protected/resources/programming.tsx rename to apps/web/src/routes/_main/resources/programming.tsx index 477d6485..cf6578a4 100644 --- a/apps/web/src/routes/_protected/resources/programming.tsx +++ b/apps/web/src/routes/_main/resources/programming.tsx @@ -1,6 +1,6 @@ import { createFileRoute } from "@tanstack/react-router"; -export const Route = createFileRoute("/_protected/resources/programming")({ +export const Route = createFileRoute("/_main/resources/programming")({ component: RouteComponent, }); diff --git a/apps/web/src/routes/_protected/resources/sponsors.tsx b/apps/web/src/routes/_main/resources/sponsors.tsx similarity index 71% rename from apps/web/src/routes/_protected/resources/sponsors.tsx rename to apps/web/src/routes/_main/resources/sponsors.tsx index ed094ab0..2afb32f2 100644 --- a/apps/web/src/routes/_protected/resources/sponsors.tsx +++ b/apps/web/src/routes/_main/resources/sponsors.tsx @@ -1,6 +1,6 @@ import { createFileRoute } from "@tanstack/react-router"; -export const Route = createFileRoute("/_protected/resources/sponsors")({ +export const Route = createFileRoute("/_main/resources/sponsors")({ component: RouteComponent, }); diff --git a/apps/web/src/routes/admin/layout.tsx b/apps/web/src/routes/admin/layout.tsx index 087e6a61..a0113bca 100644 --- a/apps/web/src/routes/admin/layout.tsx +++ b/apps/web/src/routes/admin/layout.tsx @@ -12,10 +12,10 @@ import TablerCalendarSearch from "~icons/tabler/calendar-search"; import TablerUsers from "~icons/tabler/users"; import TablerListDetails from "~icons/tabler/list-details"; import TablerSettings2 from "~icons/tabler/settings-2"; -import { Button } from "@/components/ui/Button"; +import { Link } from "react-aria-components"; export const Route = createFileRoute("/admin")({ - beforeLoad: async ({ context }) => { + beforeLoad: async ({ context, location }) => { const { user, error } = await context.userQuery.promise; if (!user && !user) { @@ -63,13 +63,13 @@ function RouteComponent() {

Admin Portal

-
- + Back to User Portal +