summaryrefslogtreecommitdiff
path: root/client/src/components/Admin.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/components/Admin.tsx')
-rw-r--r--client/src/components/Admin.tsx29
1 files changed, 29 insertions, 0 deletions
diff --git a/client/src/components/Admin.tsx b/client/src/components/Admin.tsx
new file mode 100644
index 0000000..6e772ab
--- /dev/null
+++ b/client/src/components/Admin.tsx
@@ -0,0 +1,29 @@
+import React from 'react';
+import { useMemo } from 'react';
+import { useLocation, Navigate, Outlet } from 'react-router-dom';
+import { useSelector } from 'react-redux';
+import CssBaseline from '@mui/material/CssBaseline';
+import NavBar from './NavBar';
+import { selectGuests } from '../slices/auth/adminSlice';
+
+const authenticate = () => {
+ const guests = useSelector(selectGuests);
+ return useMemo(() => ({ guests }), [guests]);
+};
+
+function Rsvp() {
+ const auth = authenticate();
+ const location = useLocation();
+
+ return auth?.guests ? (
+ <>
+ <CssBaseline />
+ <NavBar />
+ <Outlet context={auth?.guests} />
+ </>
+ ) : (
+ <Navigate to="/admin/login" state={{ from: location }} replace />
+ );
+}
+
+export default Rsvp;