mirror of
https://dev.azure.com/globalhealthx/EMR/_git/helix-engage
synced 2026-04-11 18:28:15 +00:00
fix: await logout before navigating, prevent cancelled fetch
- Logout is now async — awaits sidecar /auth/logout before clearing tokens
- confirmSignOut awaits logout() before navigate('/login')
- 5 second timeout on logout fetch to prevent indefinite hang
- Added console.warn on logout failure
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -132,9 +132,9 @@ export const Sidebar = ({ activeUrl = "/" }: SidebarProps) => {
|
|||||||
setLogoutOpen(true);
|
setLogoutOpen(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
const confirmSignOut = () => {
|
const confirmSignOut = async () => {
|
||||||
setLogoutOpen(false);
|
setLogoutOpen(false);
|
||||||
logout();
|
await logout();
|
||||||
navigate('/login');
|
navigate('/login');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -95,15 +95,20 @@ export const AuthProvider = ({ children }: AuthProviderProps) => {
|
|||||||
setIsAuthenticated(true);
|
setIsAuthenticated(true);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const logout = useCallback(() => {
|
const logout = useCallback(async () => {
|
||||||
// Notify sidecar to unlock Redis session + Ozonetel logout
|
// Notify sidecar to unlock Redis session + Ozonetel logout — await before clearing tokens
|
||||||
const token = localStorage.getItem('helix_access_token');
|
const token = localStorage.getItem('helix_access_token');
|
||||||
if (token) {
|
if (token) {
|
||||||
const apiUrl = import.meta.env.VITE_API_URL ?? 'http://localhost:4100';
|
const apiUrl = import.meta.env.VITE_API_URL ?? 'http://localhost:4100';
|
||||||
fetch(`${apiUrl}/auth/logout`, {
|
try {
|
||||||
method: 'POST',
|
await fetch(`${apiUrl}/auth/logout`, {
|
||||||
headers: { Authorization: `Bearer ${token}` },
|
method: 'POST',
|
||||||
}).catch(() => {});
|
headers: { Authorization: `Bearer ${token}` },
|
||||||
|
signal: AbortSignal.timeout(5000),
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
console.warn('Logout cleanup failed:', err);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setUser(DEFAULT_USER);
|
setUser(DEFAULT_USER);
|
||||||
|
|||||||
Reference in New Issue
Block a user