fix: 优化业务表格展示与登录会话体验
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { createPinia, setActivePinia } from "pinia";
|
||||
|
||||
describe("session store", () => {
|
||||
beforeEach(() => {
|
||||
vi.useFakeTimers();
|
||||
vi.setSystemTime(new Date("2026-03-31T12:00:00.000Z"));
|
||||
setActivePinia(createPinia());
|
||||
});
|
||||
|
||||
it("resets activity timestamps when unlocking a previously stale session", async () => {
|
||||
const { useSessionStore } = await import("./session");
|
||||
const session = useSessionStore();
|
||||
const staleTs = Date.now() - 2 * 60 * 60 * 1000 - 1_000;
|
||||
|
||||
session.recordUserActivity(staleTs);
|
||||
session.recordNetworkActivity(staleTs);
|
||||
session.setLastExtendAt(staleTs);
|
||||
session.lock("token_invalid", "user@example.com", staleTs + 10_000);
|
||||
|
||||
session.unlock();
|
||||
|
||||
expect(session.locked).toBe(false);
|
||||
expect(session.lastUserActiveAt).toBe(Date.now());
|
||||
expect(session.lastNetworkActiveAt).toBe(Date.now());
|
||||
expect(session.lastExtendAt).toBe(0);
|
||||
});
|
||||
});
|
||||
@@ -29,11 +29,15 @@ export const useSessionStore = defineStore("session", () => {
|
||||
};
|
||||
|
||||
const unlock = () => {
|
||||
const now = Date.now();
|
||||
locked.value = false;
|
||||
lockReason.value = null;
|
||||
lockEmail.value = "";
|
||||
lockAutoLogoutDeadlineAt.value = 0;
|
||||
unlockAttempts.value = 0;
|
||||
lastUserActiveAt.value = now;
|
||||
lastNetworkActiveAt.value = now;
|
||||
lastExtendAt.value = 0;
|
||||
};
|
||||
|
||||
const incrementUnlockAttempt = () => {
|
||||
|
||||
Reference in New Issue
Block a user