修改密码、管理员删帖、促销、退出登录
Change-Id: I2cc0e211ac5a04f9e89d0736fadd25541a5fccb9
diff --git a/src/context/UserContext.js b/src/context/UserContext.js
index 01f500d..7b75005 100644
--- a/src/context/UserContext.js
+++ b/src/context/UserContext.js
@@ -1,3 +1,79 @@
+// import React, { createContext, useContext, useState, useEffect } from 'react';
+
+// const avatarBaseUrl = process.env.REACT_APP_AVATAR_BASE_URL || '';
+
+// export const UserContext = createContext();
+
+// export const UserProvider = ({ children }) => {
+// const [user, setUser] = useState(null);
+// const [loading, setLoading] = useState(true);
+
+// // ✅ 标准化用户数据结构
+// const formatUser = (raw) => {
+// if (!raw) return null;
+// return {
+// userId: raw.userId || raw.id || null,
+// username: raw.username || '匿名用户',
+// avatarUrl: raw.avatarUrl ? `${avatarBaseUrl}${raw.avatarUrl}` : null,
+// ...raw, // 保留其它字段(如 email, level 等)
+// };
+// };
+
+// useEffect(() => {
+// const storedUser = localStorage.getItem('user');
+// if (storedUser) {
+// try {
+// const parsed = JSON.parse(storedUser);
+// setUser(formatUser(parsed));
+// } catch (err) {
+// console.error('本地用户信息解析失败:', err);
+// localStorage.removeItem('user');
+// setUser(null);
+// }
+// } else {
+// // 设置默认用户
+// const defaultUser = {
+// userId: 1,
+// username: '测试用户',
+// avatarUrl: null,
+// };
+// localStorage.setItem('user', JSON.stringify(defaultUser));
+// setUser(formatUser(defaultUser));
+// }
+// setLoading(false);
+// }, []);
+
+// const saveUser = (userData) => {
+// if (userData && (userData.userId || userData.id)) {
+// const formatted = formatUser(userData);
+// localStorage.setItem('user', JSON.stringify(userData)); // 原始数据存储
+// setUser(formatted); // 格式化后使用
+// } else {
+// console.error('无效的用户数据:', userData);
+// }
+// };
+
+// const logout = () => {
+// localStorage.removeItem('user');
+// setUser(null);
+// };
+
+// return (
+// <UserContext.Provider value={{ user, saveUser, logout, loading }}>
+// {children}
+// </UserContext.Provider>
+// );
+// };
+
+// export const useUser = () => {
+// const context = useContext(UserContext);
+// if (!context) {
+// throw new Error('useUser must be used within a UserProvider');
+// }
+// return context;
+// };
+
+
import React, { createContext, useContext, useState, useEffect } from 'react';
const avatarBaseUrl = process.env.REACT_APP_AVATAR_BASE_URL || '';
@@ -8,14 +84,13 @@
const [user, setUser] = useState(null);
const [loading, setLoading] = useState(true);
- // ✅ 标准化用户数据结构
const formatUser = (raw) => {
if (!raw) return null;
return {
userId: raw.userId || raw.id || null,
username: raw.username || '匿名用户',
avatarUrl: raw.avatarUrl ? `${avatarBaseUrl}${raw.avatarUrl}` : null,
- ...raw, // 保留其它字段(如 email, level 等)
+ ...raw,
};
};
@@ -31,23 +106,16 @@
setUser(null);
}
} else {
- // 设置默认用户
- const defaultUser = {
- userId: 1,
- username: '测试用户',
- avatarUrl: null,
- };
- localStorage.setItem('user', JSON.stringify(defaultUser));
- setUser(formatUser(defaultUser));
+ // 可以默认不自动登录,退出就是空
+ setUser(null);
}
setLoading(false);
}, []);
const saveUser = (userData) => {
if (userData && (userData.userId || userData.id)) {
- const formatted = formatUser(userData);
- localStorage.setItem('user', JSON.stringify(userData)); // 原始数据存储
- setUser(formatted); // 格式化后使用
+ localStorage.setItem('user', JSON.stringify(userData));
+ setUser(formatUser(userData));
} else {
console.error('无效的用户数据:', userData);
}
@@ -68,7 +136,7 @@
export const useUser = () => {
const context = useContext(UserContext);
if (!context) {
- throw new Error('useUser must be used within a UserProvider');
+ throw new Error('useUser 必须在 UserProvider 内使用');
}
return context;
};