Skip to content

Commit bbb8076

Browse files
committed
Finished adding css to login page and minimal css to temporary profile page. Added logout button and fixed bugs in redirection for user logout functionality
1 parent 7f46bdc commit bbb8076

File tree

7 files changed

+61
-22
lines changed

7 files changed

+61
-22
lines changed

frontend/src/App.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { UserContextProvider } from './UserContextProvider';
99
function App() {
1010
return (
1111
<UserContextProvider>
12-
<div class="App h-screen">
12+
<div className="App h-screen">
1313
<Routes>
1414
<Route path='/' element={<LoginPage />} />
1515
<Route path='/login' element={<LoginPage />} />

frontend/src/UserContextProvider.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,22 @@ export function UserContextProvider({ children }) {
1717
};
1818

1919
useEffect(() => {
20+
console.log(token);
21+
console.log(loggedIn);
2022
const jwtToken = localStorage.getItem("access_token");
2123
if (jwtToken && isTokenValid(jwtToken)) {
2224
setToken(jwtToken);
2325
setLoggedIn(true);
2426
} else {
27+
setLoggedIn(false);
28+
setToken(null);
2529
localStorage.removeItem('jwtToken');
2630
navigate('/');
2731
}
2832
}, [navigate]);
2933

3034
return (
31-
<UserContext.Provider value={{ token, setToken, loggedIn }}>
35+
<UserContext.Provider value={{ token, setToken, loggedIn, setLoggedIn }}>
3236
{children}
3337
</UserContext.Provider>
3438
);
-113 KB
Loading

frontend/src/css/LoginPage.css

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11

22
.login {
3+
height: 100%;
34
color: white;
45
background-image: url('../assets/loginPageImage.png');
56
background-size: cover;
7+
font-weight: 600;
68
}
79

10+
.googleButton {
11+
padding-left: 17rem;
12+
padding-right: 17rem;
13+
}

frontend/src/css/ProfilePage.css

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
2+
/* .profile {
3+
height: 100%;
4+
color: white;
5+
background-color: whi; */
6+
/* } */
7+

frontend/src/pages/LoginPage.js

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, { useContext, useEffect } from "react";
22
import { UserContext } from "../UserContextProvider";
3-
import { useNavigate } from "react-router-dom";
3+
import { useNavigate, Navigate } from "react-router-dom";
44
import { GoogleLogin } from "@react-oauth/google";
55
import axios from 'axios';
66
import '../css/LoginPage.css';
@@ -9,11 +9,9 @@ export default function LoginPage() {
99
const { loggedIn, setToken } = useContext(UserContext);
1010
const navigate = useNavigate();
1111

12-
useEffect(() => {
13-
if (loggedIn) {
14-
navigate("/profile");
15-
}
16-
}, [loggedIn, navigate]);
12+
if (loggedIn) {
13+
return <Navigate to={'/profile'} />;
14+
}
1715

1816
const onSuccess = async (credentialResponse) => {
1917
const token = credentialResponse.credential;
@@ -29,13 +27,16 @@ export default function LoginPage() {
2927
};
3028

3129
return (
32-
<div class="login flex flex-col items-center justify-center h-screen">
33-
<div class="text-center">
34-
<h1>Welcome to PeerPrep</h1>
35-
<GoogleLogin
36-
onSuccess={onSuccess}
37-
// onError={onError}
38-
/>
30+
<div className="login flex flex-col items-center justify-center">
31+
<div className="text-center">
32+
<h1 className="mt-3 text-7xl">PeerPrep</h1>
33+
<p className="mt-4 text-3xl">Match, Collaborate & Ace your Coding <br /> Interviews!</p>
34+
<div className="googleButton mt-4">
35+
<GoogleLogin
36+
onSuccess={onSuccess}
37+
// onError={onError}
38+
/></div>
39+
3940
</div>
4041
</div>
4142
)

frontend/src/pages/ProfilePage.js

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,35 @@
1-
import React from "react";
1+
import React, { useContext, useEffect } from "react";
22
import { jwtDecode } from 'jwt-decode';
3+
import { Navigate, useNavigate } from "react-router-dom";
4+
import { UserContext } from "../UserContextProvider";
5+
import '../css/ProfilePage.css';
36

47
export default function ProfilePage() {
5-
const jwtToken = localStorage.getItem("access_token");
6-
const decodedToken = jwtDecode(jwtToken);
7-
return (
8-
<div>
9-
<h1>Logged in</h1>
8+
const { setLoggedIn, loggedIn } = useContext(UserContext);
9+
const navigate = useNavigate();
10+
11+
if (!loggedIn) {
12+
return <Navigate to={'/login'} />;
13+
}
14+
15+
const jwtToken = localStorage.getItem("access_token");
16+
17+
18+
const decodedToken = jwtDecode(jwtToken);
19+
20+
const logout = () => {
21+
localStorage.removeItem("access_token");
22+
setLoggedIn(false);
23+
navigate('/login');
24+
};
25+
return (
26+
<div className="flex flex-col items-center justify-center h-screen">
27+
<div className="bg-slate-900 p-20 rounded-3xl">
28+
<h1>My profile</h1>
1029
<h2>{decodedToken.email}</h2>
1130
<h2>{decodedToken.name}</h2>
31+
<button className="rounded-full mt-5 p-2 bg-slate-700" onClick={logout}>Logout</button>
1232
</div>
13-
)
33+
</div>
34+
)
1435
}

0 commit comments

Comments
 (0)