aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff <jeffkleinaitis@gmail.com>2024-04-11 23:07:32 -0400
committerJeff <jeffkleinaitis@gmail.com>2024-04-11 23:07:32 -0400
commitcf39c673da5a2785943109de5c9172d5c607a5ea (patch)
tree0f0a55d6a719b9864b2eb9e8264f0edfc0dbe0bc
parent8fffadc92cc851dbba26dc7ac4c5ea03d9ad16df (diff)
feat: Implement React context for authorization
-rw-r--r--src/App.js9
-rw-r--r--src/providers/AuthContext.js37
2 files changed, 44 insertions, 2 deletions
diff --git a/src/App.js b/src/App.js
index 069ae93..678f26f 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { useState } from 'react';
import { BrowserRouter as Router, Routes, Route, useLocation } from 'react-router-dom';
import Navbar from './components/Navbar';
import Footer from './components/Footer';
@@ -13,14 +13,17 @@ import Careers from "./pages/Careers";
import HelpCenter from "./pages/HelpCenter";
import TermsOfService from "./pages/TermsOfService";
import PrivacyPolicy from "./pages/PrivacyPolicy";
+import Dashboard from "./pages/Dashboard";
+import {AuthProvider} from "./providers/AuthContext";
function App() {
const location = useLocation();
const excludedRoutes = ['/login', '/sign-up', '/forgot-password'];
return (
+ <AuthProvider>
<div className="App">
- {!excludedRoutes.includes(location.pathname) && <Navbar />}
+ {!excludedRoutes.includes(location.pathname) && <Navbar />}
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
@@ -30,12 +33,14 @@ function App() {
<Route path="/terms-of-service" element={<TermsOfService />} />
<Route path="/privacy-policy" element={<PrivacyPolicy />} />
<Route path="/login" element={<Login />} />
+ <Route path="/dashboard" element={<Dashboard />} />
<Route path="/forgot-password" element={<ForgotPassword />} />
<Route path="/sign-up" element={<SignUp />} />
</Routes>
{!excludedRoutes.includes(location.pathname) && <Footer />}
{!excludedRoutes.includes(location.pathname) && <PopupWidget />}
</div>
+ </AuthProvider>
);
}
diff --git a/src/providers/AuthContext.js b/src/providers/AuthContext.js
new file mode 100644
index 0000000..208b704
--- /dev/null
+++ b/src/providers/AuthContext.js
@@ -0,0 +1,37 @@
+import React, { createContext, useState } from 'react';
+export const AuthContext = createContext();
+
+export const AuthProvider = ({ children }) => {
+ // actual code we'll use later
+ // const [user, setUser] = useState(null);
+
+ // test user
+ const [user, setUser] = useState({
+ id: 1,
+ name: 'John Doe',
+ email: 'johndoe@gmail.com',
+ role: 'user',
+ });
+
+ const login = (userData) => {
+ setUser(userData);
+ };
+
+ const logout = () => {
+ setUser(null);
+ };
+
+ const authContextValue = {
+ user,
+ login,
+ logout,
+ };
+
+ return (
+ <AuthContext.Provider value={authContextValue}>
+ {children}
+ </AuthContext.Provider>
+ );
+};
+
+export default AuthProvider;