refactor: 前端登录/权限/界面状态迁移至 zustand
This commit is contained in:
@@ -8,6 +8,9 @@
|
||||
import { expect } from 'vitest';
|
||||
import { CREDENTIALS } from './fixtures';
|
||||
import { BASE } from './setup';
|
||||
import { usePermissionStore } from '../store/permission/permissionStore';
|
||||
import { useUserStore } from '../store/user/userStore';
|
||||
import type { UserInfo } from '../store/user/userTypes';
|
||||
|
||||
// ── Types ───────────────────────────────────────────────────────────
|
||||
|
||||
@@ -37,8 +40,10 @@ export async function loginAs(
|
||||
expect(res.status).toBe(201);
|
||||
const json = (await res.json()) as ApiResponse<{ token: string; user: Record<string, unknown> }>;
|
||||
expect(json.code).toBe(0);
|
||||
localStorage.setItem('token', json.data.token);
|
||||
localStorage.setItem('user', JSON.stringify(json.data.user));
|
||||
useUserStore.getState().setSession(json.data.token, json.data.user as unknown as UserInfo);
|
||||
usePermissionStore
|
||||
.getState()
|
||||
.writePermissions((json.data.user.permissions ?? []) as string[]);
|
||||
return json.data;
|
||||
}
|
||||
|
||||
@@ -46,15 +51,14 @@ export async function loginAs(
|
||||
* Logout: clear localStorage.
|
||||
*/
|
||||
export function logout(): void {
|
||||
localStorage.removeItem('token');
|
||||
localStorage.removeItem('user');
|
||||
localStorage.removeItem('permissions');
|
||||
useUserStore.getState().logout();
|
||||
usePermissionStore.getState().clearPermissions();
|
||||
}
|
||||
|
||||
// ── API helpers (authenticated) ─────────────────────────────────────
|
||||
|
||||
function authHeaders(): Record<string, string> {
|
||||
const token = localStorage.getItem('token');
|
||||
const token = useUserStore.getState().token;
|
||||
return {
|
||||
'Content-Type': 'application/json',
|
||||
...(token ? { Authorization: `Bearer ${token}` } : {}),
|
||||
|
||||
Reference in New Issue
Block a user