fix: redirect to login on expired/missing JWT and 401 responses
This commit is contained in:
@@ -9,15 +9,30 @@ import Attackers from './components/Attackers';
|
||||
import Config from './components/Config';
|
||||
import Bounty from './components/Bounty';
|
||||
|
||||
function isTokenValid(token: string): boolean {
|
||||
try {
|
||||
const payload = JSON.parse(atob(token.split('.')[1].replace(/-/g, '+').replace(/_/g, '/')));
|
||||
return typeof payload.exp === 'number' && payload.exp * 1000 > Date.now();
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function getValidToken(): string | null {
|
||||
const stored = localStorage.getItem('token');
|
||||
if (stored && isTokenValid(stored)) return stored;
|
||||
if (stored) localStorage.removeItem('token');
|
||||
return null;
|
||||
}
|
||||
|
||||
function App() {
|
||||
const [token, setToken] = useState<string | null>(localStorage.getItem('token'));
|
||||
const [token, setToken] = useState<string | null>(getValidToken);
|
||||
const [searchQuery, setSearchQuery] = useState('');
|
||||
|
||||
useEffect(() => {
|
||||
const savedToken = localStorage.getItem('token');
|
||||
if (savedToken) {
|
||||
setToken(savedToken);
|
||||
}
|
||||
const onAuthLogout = () => setToken(null);
|
||||
window.addEventListener('auth:logout', onAuthLogout);
|
||||
return () => window.removeEventListener('auth:logout', onAuthLogout);
|
||||
}, []);
|
||||
|
||||
const handleLogin = (newToken: string) => {
|
||||
|
||||
Reference in New Issue
Block a user