Merge pull request #444 from RohitR311/error-fix
feat: better error handling
This commit is contained in:
@@ -487,6 +487,19 @@
|
||||
},
|
||||
"navbar": {
|
||||
"project_name": "Maxun",
|
||||
"notifications": {
|
||||
"success": {
|
||||
"logout": "Erfolgreich abgemeldet"
|
||||
},
|
||||
"errors": {
|
||||
"logout": {
|
||||
"unauthorized": "Sie sind nicht berechtigt, diese Aktion durchzuführen",
|
||||
"server": "Serverfehler beim Abmelden",
|
||||
"network": "Netzwerkfehler beim Abmelden",
|
||||
"unknown": "Ein unerwarteter Fehler ist beim Abmelden aufgetreten"
|
||||
}
|
||||
}
|
||||
},
|
||||
"upgrade": {
|
||||
"button": "Upgrade",
|
||||
"modal": {
|
||||
|
||||
@@ -498,6 +498,19 @@
|
||||
},
|
||||
"navbar": {
|
||||
"project_name": "Maxun",
|
||||
"notifications": {
|
||||
"success": {
|
||||
"logout": "Logged out successfully"
|
||||
},
|
||||
"errors": {
|
||||
"logout": {
|
||||
"unauthorized": "You are not authorized to perform this action",
|
||||
"server": "Server error occurred during logout",
|
||||
"network": "Network error while logging out",
|
||||
"unknown": "An unexpected error occurred during logout"
|
||||
}
|
||||
}
|
||||
},
|
||||
"upgrade": {
|
||||
"button": "Upgrade",
|
||||
"modal": {
|
||||
|
||||
@@ -488,6 +488,19 @@
|
||||
},
|
||||
"navbar": {
|
||||
"project_name": "Maxun",
|
||||
"notifications": {
|
||||
"success": {
|
||||
"logout": "Sesión cerrada exitosamente"
|
||||
},
|
||||
"errors": {
|
||||
"logout": {
|
||||
"unauthorized": "No estás autorizado para realizar esta acción",
|
||||
"server": "Error del servidor durante el cierre de sesión",
|
||||
"network": "Error de red al cerrar sesión",
|
||||
"unknown": "Ocurrió un error inesperado al cerrar sesión"
|
||||
}
|
||||
}
|
||||
},
|
||||
"upgrade": {
|
||||
"button": "Actualizar",
|
||||
"modal": {
|
||||
|
||||
@@ -488,6 +488,19 @@
|
||||
},
|
||||
"navbar": {
|
||||
"project_name": "Maxun",
|
||||
"notifications": {
|
||||
"success": {
|
||||
"logout": "ログアウトに成功しました"
|
||||
},
|
||||
"errors": {
|
||||
"logout": {
|
||||
"unauthorized": "この操作を実行する権限がありません",
|
||||
"server": "ログアウト中にサーバーエラーが発生しました",
|
||||
"network": "ログアウト中にネットワークエラーが発生しました",
|
||||
"unknown": "ログアウト中に予期せぬエラーが発生しました"
|
||||
}
|
||||
}
|
||||
},
|
||||
"upgrade": {
|
||||
"button": "アップグレード",
|
||||
"modal": {
|
||||
|
||||
@@ -488,6 +488,19 @@
|
||||
},
|
||||
"navbar": {
|
||||
"project_name": "Maxun",
|
||||
"notifications": {
|
||||
"success": {
|
||||
"logout": "退出登录成功"
|
||||
},
|
||||
"errors": {
|
||||
"logout": {
|
||||
"unauthorized": "您没有执行此操作的权限",
|
||||
"server": "退出登录时发生服务器错误",
|
||||
"network": "退出登录时发生网络错误",
|
||||
"unknown": "退出登录时发生未知错误"
|
||||
}
|
||||
}
|
||||
},
|
||||
"upgrade": {
|
||||
"button": "升级",
|
||||
"modal": {
|
||||
|
||||
@@ -140,14 +140,38 @@ router.post("/login", async (req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
router.get("/logout", async (req, res) => {
|
||||
try {
|
||||
res.clearCookie("token");
|
||||
return res.json({ message: "Logout successful" });
|
||||
} catch (error: any) {
|
||||
res.status(500).send(`Could not logout user - ${error.message}`);
|
||||
router.get(
|
||||
"/logout",
|
||||
requireSignIn,
|
||||
async (req: Request, res) => {
|
||||
const authenticatedReq = req as AuthenticatedRequest;
|
||||
try {
|
||||
if (!authenticatedReq.user) {
|
||||
return res.status(401).json({
|
||||
ok: false,
|
||||
message: "Unauthorized",
|
||||
code: "unauthorized"
|
||||
});
|
||||
}
|
||||
|
||||
res.clearCookie("token");
|
||||
|
||||
return res.status(200).json({
|
||||
ok: true,
|
||||
message: "Logged out successfully",
|
||||
code: "success"
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('Logout error:', error);
|
||||
return res.status(500).json({
|
||||
ok: false,
|
||||
message: "Error during logout",
|
||||
code: "server",
|
||||
error: process.env.NODE_ENV === 'development' ? error : undefined
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
);
|
||||
|
||||
router.get(
|
||||
"/current-user",
|
||||
|
||||
@@ -108,11 +108,39 @@ export const NavBar: React.FC<NavBarProps> = ({
|
||||
};
|
||||
|
||||
const logout = async () => {
|
||||
dispatch({ type: "LOGOUT" });
|
||||
window.localStorage.removeItem("user");
|
||||
const { data } = await axios.get(`${apiUrl}/auth/logout`);
|
||||
notify("success", data.message);
|
||||
navigate("/login");
|
||||
try {
|
||||
const { data } = await axios.get(`${apiUrl}/auth/logout`);
|
||||
if (data.ok) {
|
||||
dispatch({ type: "LOGOUT" });
|
||||
window.localStorage.removeItem("user");
|
||||
notify('success', t('navbar.notifications.success.logout'));
|
||||
navigate("/login");
|
||||
}
|
||||
} catch (error: any) {
|
||||
const status = error.response?.status;
|
||||
let errorKey = 'unknown';
|
||||
|
||||
switch (status) {
|
||||
case 401:
|
||||
errorKey = 'unauthorized';
|
||||
break;
|
||||
case 500:
|
||||
errorKey = 'server';
|
||||
break;
|
||||
default:
|
||||
if (error.message?.includes('Network Error')) {
|
||||
errorKey = 'network';
|
||||
}
|
||||
}
|
||||
|
||||
notify(
|
||||
'error',
|
||||
t(`navbar.notifications.errors.logout.${errorKey}`, {
|
||||
error: error.response?.data?.message || error.message
|
||||
})
|
||||
);
|
||||
navigate("/login");
|
||||
}
|
||||
};
|
||||
|
||||
const goToMainMenu = async () => {
|
||||
|
||||
Reference in New Issue
Block a user