fix: 修复 hooks.ts 中 username/role 可能 undefined 的问题

- 使用 nullish coalescing operator 处理可能的 undefined 值
- 确保 localStorage 存储的值始终有效

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Claude AI
2026-03-24 23:24:47 +00:00
parent b4d3c5d6f7
commit 2677c2c23e

View File

@@ -54,14 +54,16 @@ export function useAuth() {
if (response.session_id) {
console.log('[useAuth] Login successful, setting state...');
setIsAuthenticated(true);
setUsername(response.username);
setRole(response.role);
const username = response.username ?? 'Unknown';
const role = response.role ?? 'user';
setUsername(username);
setRole(role);
// 持久化到 localStorage
localStorage.setItem('session_id', response.session_id);
localStorage.setItem('username', response.username);
localStorage.setItem('username', username);
const userInfo: UserInfo = {
username: response.username,
role: response.role,
username,
role,
};
localStorage.setItem('userInfo', JSON.stringify(userInfo));
console.log('[useAuth] State updated, userInfo:', userInfo);
@@ -85,14 +87,16 @@ export function useAuth() {
const loginResponse = await apiClient.login(email, password);
if (loginResponse.session_id) {
setIsAuthenticated(true);
setUsername(loginResponse.username);
setRole(loginResponse.role);
const loginUsername = loginResponse.username ?? username;
const loginRole = loginResponse.role ?? 'user';
setUsername(loginUsername);
setRole(loginRole);
// 持久化到 localStorage
localStorage.setItem('session_id', loginResponse.session_id);
localStorage.setItem('username', loginResponse.username);
localStorage.setItem('username', loginUsername);
const userInfo: UserInfo = {
username: loginResponse.username,
role: loginResponse.role,
username: loginUsername,
role: loginRole,
};
localStorage.setItem('userInfo', JSON.stringify(userInfo));
return { ...registerResponse, session: loginResponse };