Merge pull request #444 from RohitR311/error-fix
feat: better error handling
This commit is contained in:
@@ -487,6 +487,19 @@
|
|||||||
},
|
},
|
||||||
"navbar": {
|
"navbar": {
|
||||||
"project_name": "Maxun",
|
"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": {
|
"upgrade": {
|
||||||
"button": "Upgrade",
|
"button": "Upgrade",
|
||||||
"modal": {
|
"modal": {
|
||||||
|
|||||||
@@ -498,6 +498,19 @@
|
|||||||
},
|
},
|
||||||
"navbar": {
|
"navbar": {
|
||||||
"project_name": "Maxun",
|
"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": {
|
"upgrade": {
|
||||||
"button": "Upgrade",
|
"button": "Upgrade",
|
||||||
"modal": {
|
"modal": {
|
||||||
|
|||||||
@@ -488,6 +488,19 @@
|
|||||||
},
|
},
|
||||||
"navbar": {
|
"navbar": {
|
||||||
"project_name": "Maxun",
|
"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": {
|
"upgrade": {
|
||||||
"button": "Actualizar",
|
"button": "Actualizar",
|
||||||
"modal": {
|
"modal": {
|
||||||
|
|||||||
@@ -488,6 +488,19 @@
|
|||||||
},
|
},
|
||||||
"navbar": {
|
"navbar": {
|
||||||
"project_name": "Maxun",
|
"project_name": "Maxun",
|
||||||
|
"notifications": {
|
||||||
|
"success": {
|
||||||
|
"logout": "ログアウトに成功しました"
|
||||||
|
},
|
||||||
|
"errors": {
|
||||||
|
"logout": {
|
||||||
|
"unauthorized": "この操作を実行する権限がありません",
|
||||||
|
"server": "ログアウト中にサーバーエラーが発生しました",
|
||||||
|
"network": "ログアウト中にネットワークエラーが発生しました",
|
||||||
|
"unknown": "ログアウト中に予期せぬエラーが発生しました"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"upgrade": {
|
"upgrade": {
|
||||||
"button": "アップグレード",
|
"button": "アップグレード",
|
||||||
"modal": {
|
"modal": {
|
||||||
|
|||||||
@@ -488,6 +488,19 @@
|
|||||||
},
|
},
|
||||||
"navbar": {
|
"navbar": {
|
||||||
"project_name": "Maxun",
|
"project_name": "Maxun",
|
||||||
|
"notifications": {
|
||||||
|
"success": {
|
||||||
|
"logout": "退出登录成功"
|
||||||
|
},
|
||||||
|
"errors": {
|
||||||
|
"logout": {
|
||||||
|
"unauthorized": "您没有执行此操作的权限",
|
||||||
|
"server": "退出登录时发生服务器错误",
|
||||||
|
"network": "退出登录时发生网络错误",
|
||||||
|
"unknown": "退出登录时发生未知错误"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"upgrade": {
|
"upgrade": {
|
||||||
"button": "升级",
|
"button": "升级",
|
||||||
"modal": {
|
"modal": {
|
||||||
|
|||||||
@@ -140,14 +140,38 @@ router.post("/login", async (req, res) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
router.get("/logout", async (req, res) => {
|
router.get(
|
||||||
try {
|
"/logout",
|
||||||
res.clearCookie("token");
|
requireSignIn,
|
||||||
return res.json({ message: "Logout successful" });
|
async (req: Request, res) => {
|
||||||
} catch (error: any) {
|
const authenticatedReq = req as AuthenticatedRequest;
|
||||||
res.status(500).send(`Could not logout user - ${error.message}`);
|
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(
|
router.get(
|
||||||
"/current-user",
|
"/current-user",
|
||||||
|
|||||||
@@ -108,11 +108,39 @@ export const NavBar: React.FC<NavBarProps> = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
const logout = async () => {
|
const logout = async () => {
|
||||||
dispatch({ type: "LOGOUT" });
|
try {
|
||||||
window.localStorage.removeItem("user");
|
const { data } = await axios.get(`${apiUrl}/auth/logout`);
|
||||||
const { data } = await axios.get(`${apiUrl}/auth/logout`);
|
if (data.ok) {
|
||||||
notify("success", data.message);
|
dispatch({ type: "LOGOUT" });
|
||||||
navigate("/login");
|
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 () => {
|
const goToMainMenu = async () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user