Skip to content

Commit 64e4aec

Browse files
committed
Run format fix
1 parent b9b1389 commit 64e4aec

File tree

3 files changed

+33
-23
lines changed

3 files changed

+33
-23
lines changed

frontend/src/app/components/layout/AuthGuard.tsx

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Tool: GitHub Copilot (model: Claude Sonnet 4), date: 2025-09-16
44
* Purpose: To create a simple client-side auth guard that prevents browser back navigation to cached protected pages after logout.
55
* Author Review: I validated correctness, security, and performance of the code.
6-
*
6+
*
77
*/
88

99
/**
@@ -45,7 +45,9 @@ export default function AuthGuard() {
4545
if (!pathname.startsWith("/auth")) {
4646
const token = getToken();
4747
if (!token) {
48-
console.log("AuthGuard: No token found on popstate (back/forward), redirecting to login");
48+
console.log(
49+
"AuthGuard: No token found on popstate (back/forward), redirecting to login",
50+
);
4951
router.push("/auth/login");
5052
}
5153
}
@@ -61,14 +63,17 @@ export default function AuthGuard() {
6163
if (!document.hidden && !pathname.startsWith("/auth")) {
6264
const token = getToken();
6365
if (!token) {
64-
console.log("AuthGuard: No token found on visibility change, redirecting to login");
66+
console.log(
67+
"AuthGuard: No token found on visibility change, redirecting to login",
68+
);
6569
router.push("/auth/login");
6670
}
6771
}
6872
};
6973

7074
document.addEventListener("visibilitychange", handleVisibilityChange);
71-
return () => document.removeEventListener("visibilitychange", handleVisibilityChange);
75+
return () =>
76+
document.removeEventListener("visibilitychange", handleVisibilityChange);
7277
}, [pathname, router]);
7378

7479
// Add focus listener for additional protection
@@ -77,7 +82,9 @@ export default function AuthGuard() {
7782
if (!pathname.startsWith("/auth")) {
7883
const token = getToken();
7984
if (!token) {
80-
console.log("AuthGuard: No token found on focus, redirecting to login");
85+
console.log(
86+
"AuthGuard: No token found on focus, redirecting to login",
87+
);
8188
router.push("/auth/login");
8289
}
8390
}
@@ -88,4 +95,4 @@ export default function AuthGuard() {
8895
}, [pathname, router]);
8996

9097
return null; // This component renders nothing
91-
}
98+
}

frontend/src/app/components/layout/Navbar.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,18 +38,18 @@ export default function Navbar() {
3838
const handleLogout = () => {
3939
// Clear user context first
4040
setUser(null);
41-
41+
4242
// Clear token from cookies
4343
removeToken();
44-
44+
4545
// Clear all localStorage and sessionStorage
46-
if (typeof window !== 'undefined') {
46+
if (typeof window !== "undefined") {
4747
localStorage.clear();
4848
sessionStorage.clear();
4949
}
50-
51-
// Use Next.js router.push for client-side navigation
52-
router.push("/auth/login");
50+
51+
// Use Next.js router.push for client-side navigation
52+
router.push("/auth/login");
5353
};
5454

5555
return (

frontend/src/middleware.ts

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ export async function middleware(request: NextRequest) {
3030
if (!token) {
3131
const loginUrl = new URL("/auth/login", request.url);
3232
const response = NextResponse.redirect(loginUrl);
33-
33+
3434
// Clear any existing token cookie to ensure clean state
3535
response.cookies.set("token", "", {
3636
path: "/",
3737
expires: new Date(0),
3838
});
39-
39+
4040
return response;
4141
}
4242

@@ -48,37 +48,40 @@ export async function middleware(request: NextRequest) {
4848
// Token is invalid, redirect to login
4949
const loginUrl = new URL("/auth/login", request.url);
5050
const redirectResponse = NextResponse.redirect(loginUrl);
51-
51+
5252
// Clear invalid token cookie
5353
redirectResponse.cookies.set("token", "", {
5454
path: "/",
5555
expires: new Date(0),
5656
});
57-
57+
5858
return redirectResponse;
5959
}
6060

6161
// Token is valid, allow access but add cache control headers
6262
const response_next = NextResponse.next();
63-
63+
6464
// Prevent browser caching of protected pages to avoid back navigation issues
65-
response_next.headers.set('Cache-Control', 'no-cache, no-store, must-revalidate');
66-
response_next.headers.set('Pragma', 'no-cache');
67-
response_next.headers.set('Expires', '0');
68-
65+
response_next.headers.set(
66+
"Cache-Control",
67+
"no-cache, no-store, must-revalidate",
68+
);
69+
response_next.headers.set("Pragma", "no-cache");
70+
response_next.headers.set("Expires", "0");
71+
6972
return response_next;
7073
} catch (error) {
7174
console.error("Token verification failed:", error);
7275
// On error, redirect to login
7376
const loginUrl = new URL("/auth/login", request.url);
7477
const redirectResponse = NextResponse.redirect(loginUrl);
75-
78+
7679
// Clear potentially corrupted token cookie
7780
redirectResponse.cookies.set("token", "", {
7881
path: "/",
7982
expires: new Date(0),
8083
});
81-
84+
8285
return redirectResponse;
8386
}
8487
}

0 commit comments

Comments
 (0)