fix: refresh user logout state

This commit is contained in:
boos
2026-05-19 10:41:40 +02:00
parent 4fe84707e5
commit 22751effd5
7 changed files with 12 additions and 801 deletions
+4 -1
View File
@@ -1096,7 +1096,10 @@ function AppShell() {
<Route path="/users" element={<UserManagement />} />
{/* User specific pages */}
<Route path="/user/dashboard" element={<UserDashboard />} />
<Route
path="/user/dashboard"
element={<UserDashboard onLogout={() => setUserAuthed(false)} />}
/>
<Route path="/user/dashboard/keys" element={<UserKeys />} />
<Route path="/user/dashboard/profile" element={<UserProfile />} />
<Route path="/user/usage" element={<UsageRecords />} />
+8 -2
View File
@@ -35,7 +35,7 @@ interface LogItem {
created_at: string;
}
export default function UserDashboard() {
export default function UserDashboard({ onLogout }: { onLogout?: () => void }) {
const navigate = useNavigate();
const [profile, setProfile] = useState<UserProfile | null>(null);
const [keys, setKeys] = useState<ApiKey[]>([]);
@@ -74,6 +74,12 @@ export default function UserDashboard() {
useEffect(() => { loadData(); }, [loadData]);
const handleLogout = () => {
clearUserSession(localStorage);
onLogout?.();
navigate('/user/login', { replace: true });
};
if (loading) {
return (
<div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100%', minHeight: '400px' }}>
@@ -210,7 +216,7 @@ export default function UserDashboard() {
</div>
<div style={{ marginTop: '20px', display: 'flex', gap: '10px' }}>
<button className="btn btn-ghost btn-sm" style={{ flex: 1, border: '1px solid var(--color-border)' }} onClick={() => navigate('/user/dashboard/profile')}>修改资料</button>
<button className="btn btn-ghost btn-sm danger" style={{ flex: 1, border: '1px solid var(--color-border)' }} onClick={() => { clearUserSession(localStorage); window.location.href = '/user/login'; }}>退出登录</button>
<button className="btn btn-ghost btn-sm danger" style={{ flex: 1, border: '1px solid var(--color-border)' }} onClick={handleLogout}>退出登录</button>
</div>
</section>
</div>