🚫 feat(web): add 403 Forbidden page and AdminRoute guard
- Add new Forbidden page at /forbidden (`web/src/pages/Forbidden/index.js`) - Use Semi-UI Empty with IllustrationNoAccess (250x250) - Update i18n description to: '您无权访问此页面,请联系管理员~' - Align visual style with existing 404 page - Introduce `AdminRoute` in `web/src/helpers/auth.js` - Use `UserContext`/localStorage; redirect to `/forbidden` when `!user` or `user.role < 10` - Protect console/admin routes with `AdminRoute` and register `/forbidden` in `web/src/App.js` - Update `web/src/i18n/locales/en.json` - Add English translation for the new forbidden message - Remove legacy "没有权限" entry - Lint passes; no runtime errors observed
This commit is contained in:
@@ -49,4 +49,20 @@ function PrivateRoute({ children }) {
|
||||
return children;
|
||||
}
|
||||
|
||||
export function AdminRoute({ children }) {
|
||||
const raw = localStorage.getItem('user');
|
||||
if (!raw) {
|
||||
return <Navigate to='/login' state={{ from: history.location }} />;
|
||||
}
|
||||
try {
|
||||
const user = JSON.parse(raw);
|
||||
if (user && typeof user.role === 'number' && user.role >= 10) {
|
||||
return children;
|
||||
}
|
||||
} catch (e) {
|
||||
// ignore
|
||||
}
|
||||
return <Navigate to='/forbidden' replace />;
|
||||
}
|
||||
|
||||
export { PrivateRoute };
|
||||
|
||||
Reference in New Issue
Block a user