blob: 817b708cb26afe0f8b14e3ad013bebb4e535a1f8 [file] [log] [blame]
TRM-codingd1cbf672025-06-18 15:15:08 +08001import React, { useState, useEffect } from 'react';
2import { NavLink, Outlet } from 'react-router-dom';
3import { Spin } from 'antd';
4import { fetchUserList } from '../api/posts';
5import '../style/SuperAdmin.css';
6
7export default function SuperAdmin() {
8 const SUPERADMIN_USER_ID = 3;
9 const [loading, setLoading] = useState(true);
10 const [hasPermission, setHasPermission] = useState(true);
11
12 useEffect(() => {
13 async function check() {
14 try {
15 await fetchUserList(SUPERADMIN_USER_ID);
16 } catch (e) {
17 if (e.message === 'Unauthorized') {
18 setHasPermission(false);
19 } else {
20 console.error(e);
21 }
22 } finally {
23 setLoading(false);
24 }
25 }
26 check();
27 }, []);
28
29 if (loading) return <Spin spinning tip="加载中…" style={{ width: '100%', marginTop: 100 }} />;
30 if (!hasPermission) return <div style={{ textAlign: 'center', marginTop: 100 }}>权限不足</div>;
31
32 return (
33 <div className="super-admin-container">
34 <aside className="super-admin-sidebar">
35 <h2>超级管理员</h2>
36 <nav>
37 <ul>
38 <li>
39 <NavLink
40 to="users"
41 end
42 className={({ isActive }) => isActive ? 'active' : ''}
43 >
44 用户管理
45 </NavLink>
46 </li>
47 <li>
48 <NavLink
49 to="dashboard"
50 className={({ isActive }) => isActive ? 'active' : ''}
51 >
52 平台运行监控
53 </NavLink>
54 </li>
55 </ul>
56 </nav>
57 </aside>
58
59 <main className="super-admin-content">
60 <Outlet />
61 </main>
62 </div>
63 );
64}