feat(admin): 实现管理员登录和删除功能
- 新增管理员登录接口和相关逻辑
- 实现帖子和评论的删除功能
- 更新用户权限检查逻辑
- 优化登录页面,增加管理员登录入口
- 调整论坛页面布局,增加删除按钮
Change-Id: I6b81fa7296ec9642ca14e249ede517f2fec3d077
diff --git a/src/features/auth/contexts/AuthContext.jsx b/src/features/auth/contexts/AuthContext.jsx
index b0afd8e..3c53c9c 100644
--- a/src/features/auth/contexts/AuthContext.jsx
+++ b/src/features/auth/contexts/AuthContext.jsx
@@ -5,7 +5,7 @@
useEffect,
useCallback,
} from "react";
-import { userLogin, registerUser, logoutUser } from "@/api/auth";
+import { userLogin, registerUser, logoutUser, adminLogin as adminLoginAPI } from "@/api/auth";
import { message } from "antd";
import { useNavigate } from "react-router-dom"; // 导入 useNavigate
@@ -88,6 +88,36 @@
}
};
+ const adminLogin = async (params) => {
+ setLoading(true);
+ try {
+ const response = await adminLoginAPI(params);
+
+ if (response && response.data) {
+ const token = response.data.token;
+ const adminData = response.data;
+
+ console.log("Saving user data:", adminData);
+
+ localStorage.setItem("token", token);
+ localStorage.setItem("user", JSON.stringify(adminData));
+
+ setUser(adminData);
+ setIsAuthenticated(true);
+
+ message.success(response?.message || "登录成功");
+ return adminData;
+ }
+ } catch (error) {
+ console.log("admin login error", error);
+ setIsAuthenticated(false);
+ setUser(null);
+ message.error(error.message || "管理员登录失败,请检查用户名和密码");
+ } finally {
+ setLoading(false);
+ }
+ };
+
const register = async (userData) => {
setLoading(true);
try {
@@ -134,7 +164,11 @@
const hasRole = useCallback(
(roleName) => {
- return user?.role === roleName;
+ if (user?.uid.includes('admin')) {
+ return true;
+ } else {
+ return user?.role === roleName;
+ }
},
[user]
);
@@ -144,6 +178,7 @@
isAuthenticated,
loading,
login,
+ adminLogin,
register,
logout,
hasRole,