Skip to content

Commit

Permalink
Clean up expired JWT handling, client handling
Browse files Browse the repository at this point in the history
  • Loading branch information
elvincheng3 committed Nov 9, 2024
1 parent f4e8d89 commit db75f7d
Show file tree
Hide file tree
Showing 5 changed files with 60 additions and 30 deletions.
16 changes: 13 additions & 3 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import MemberClient from "./client/MemberClient";
import Footer from "./components/Footer";
import Menu from "./components/Menu";
import RequireAuth from "./components/RequireAuth";
import { AuthContext } from "./hooks/useAuth";
import { AuthContext, useAuth } from "./hooks/useAuth";
import AttendanceRecordPage from "./pages/AttendanceRecordPage";
import Error404 from "./pages/Error404";
import EventDetailsPage from "./pages/EventDetailsPage";
Expand All @@ -19,6 +19,7 @@ import { JWTAuthToken } from "./util/Types";
function App() {
const { member, loading, setMember, setLoading, setCheckedCookie } =
useContext(AuthContext);
const { logout } = useAuth();
const [cookies] = useCookies(["token"]);

useEffect(() => {
Expand All @@ -33,14 +34,23 @@ function App() {
if (memberResponse.data) {
setMember(memberResponse.data);
} else {
console.log("Error fetching member: ", memberResponse.error);
console.log("Unable to verify member: ", memberResponse.error);
logout();
}
}
setCheckedCookie(true);
setLoading(false);
};
checkLoggedIn();
}, [cookies.token, setMember, loading, setLoading, member]);
}, [
cookies.token,
setMember,
loading,
setLoading,
member,
setCheckedCookie,
logout,
]);

return (
<div className="flex flex-col min-h-screen justify-between">
Expand Down
32 changes: 22 additions & 10 deletions src/client/AuthClient.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import axios from "axios";
import axios, { AxiosError } from "axios";
import { AuthResponse, Response } from "../util/Types";

class AuthClient {
Expand All @@ -7,15 +7,27 @@ class AuthClient {
lastName: string
): Promise<Response<AuthResponse>> {
// Call the login API
const response = await axios.post(`/api/auth`, {
nuid,
lastName,
});
return {
data: response.data.auth,
error: response.data.error,
status: response.status,
};
try {
const response = await axios.post(`/api/auth`, {
nuid,
lastName,
});
return {
data: response.data.auth,
error: response?.data.error,
status: response.status,
};
} catch (e) {
if (e instanceof AxiosError) {
let error: AxiosError<any, any> = e;
return {
data: undefined,
error: error.response?.data.error,
status: error.response?.status,
};
}
throw e;
}
}
}

Expand Down
20 changes: 12 additions & 8 deletions src/client/EventClient.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import axios from "axios";
import axios, { AxiosError } from "axios";
import { Event, Response } from "../util/Types";

export default class EventClient {
Expand All @@ -8,17 +8,21 @@ export default class EventClient {
* @returns The event if it can be found, or an error
*/
public static async fetchEvent(id: number): Promise<Response<Event>> {
const response = await axios.get(`/api/event/getEvent/?id=${id}`);
if (response.status === 200) {
try {
const response = await axios.get(`/api/event/getEvent/?id=${id}`);
return {
data: response.data,
error: "",
};
} else {
return {
data: undefined,
error: response.data,
};
} catch (e) {
if (e instanceof AxiosError) {
let error: AxiosError<any, any> = e;
return {
data: undefined,
error: error.response?.data,
};
}
throw e;
}
}

Expand Down
20 changes: 12 additions & 8 deletions src/client/MemberClient.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import axios from "axios";
import axios, { AxiosError } from "axios";
import { Member, Response } from "../util/Types";

export default class MemberClient {
Expand All @@ -8,17 +8,21 @@ export default class MemberClient {
* @returns The Member with that nuid or undefined
*/
public static async fetchMember(id: string): Promise<Response<Member>> {
const response = await axios.get(`/api/member/getMember/?id=${id}`);
if (response.status === 200) {
try {
const response = await axios.get(`/api/member/getMember/?id=${id}`);
return {
data: response.data,
error: "",
};
} else {
return {
data: undefined,
error: response.data,
};
} catch (e) {
if (e instanceof AxiosError) {
let error: AxiosError<any, any> = e;
return {
data: undefined,
error: error.response?.data,
};
}
throw e;
}
}
}
2 changes: 1 addition & 1 deletion src/util/styleConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export const AttendanceTagToText: Record<AttendanceTag, string> = {
A: "Absent",
L: "Late Arrival",
D: "Early Dismissal",
O: "Attendend",
O: "Attended",
N: "Not Required ",
E: "Excused ",
};
Expand Down

0 comments on commit db75f7d

Please sign in to comment.