fix: refresh uploads and remember login

This commit is contained in:
2026-08-13 22:25:00 +08:00
parent e0bd001541
commit fdab9978bf
17 changed files with 424 additions and 19 deletions
+24 -10
View File
@@ -6,38 +6,51 @@ import type { AuthenticatedUser, LoginResponse } from "@/types";
const USER_STORAGE_KEY = "live-recorder-user";
const TOKEN_STORAGE_KEY = "live-recorder-token";
function readStoredValue(key: string) {
return localStorage.getItem(key) ?? sessionStorage.getItem(key);
}
function clearStoredSession() {
[localStorage, sessionStorage].forEach((storage) => {
storage.removeItem(TOKEN_STORAGE_KEY);
storage.removeItem(USER_STORAGE_KEY);
});
}
export const useAuthStore = defineStore("auth", () => {
const token = ref(localStorage.getItem(TOKEN_STORAGE_KEY) ?? "");
const token = ref(readStoredValue(TOKEN_STORAGE_KEY) ?? "");
const user = ref<AuthenticatedUser | null>(
(() => {
const raw = localStorage.getItem(USER_STORAGE_KEY);
const raw = readStoredValue(USER_STORAGE_KEY);
return raw ? (JSON.parse(raw) as AuthenticatedUser) : null;
})()
);
const isAuthenticated = computed(() => Boolean(token.value));
function persistSession(session: LoginResponse) {
function persistSession(session: LoginResponse, rememberMe: boolean) {
token.value = session.token;
user.value = session.user;
localStorage.setItem(TOKEN_STORAGE_KEY, session.token);
localStorage.setItem(USER_STORAGE_KEY, JSON.stringify(session.user));
clearStoredSession();
const storage = rememberMe ? localStorage : sessionStorage;
storage.setItem(TOKEN_STORAGE_KEY, session.token);
storage.setItem(USER_STORAGE_KEY, JSON.stringify(session.user));
}
function clearSession() {
token.value = "";
user.value = null;
localStorage.removeItem(TOKEN_STORAGE_KEY);
localStorage.removeItem(USER_STORAGE_KEY);
clearStoredSession();
}
async function login(username: string, password: string) {
async function login(username: string, password: string, rememberMe: boolean) {
const { data } = await apiClient.post<LoginResponse>("/auth/login", {
username,
password
password,
rememberMe
});
persistSession(data);
persistSession(data, rememberMe);
return data;
}
@@ -54,6 +67,7 @@ export const useAuthStore = defineStore("auth", () => {
currentPassword,
newPassword
});
clearSession();
}
return {