|
|
@@ -5,6 +5,7 @@ import { sha256 } from "js-sha256";
|
|
|
import { useRouter } from "next/navigation";
|
|
|
import type React from "react";
|
|
|
import { createContext, useContext, useEffect, useState } from "react";
|
|
|
+import { TOKEN_KEY, USER_KEY } from "@/constants";
|
|
|
import {
|
|
|
getUserInfo,
|
|
|
login as loginApi,
|
|
|
@@ -44,9 +45,9 @@ export function setToken(token: string | null): void {
|
|
|
tokenCache = token;
|
|
|
if (typeof window !== "undefined") {
|
|
|
if (token) {
|
|
|
- localStorage.setItem("token", token);
|
|
|
+ localStorage.setItem(TOKEN_KEY, token);
|
|
|
} else {
|
|
|
- localStorage.removeItem("token");
|
|
|
+ localStorage.removeItem(TOKEN_KEY);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -57,7 +58,7 @@ export function setToken(token: string | null): void {
|
|
|
export function clearToken(): void {
|
|
|
tokenCache = null;
|
|
|
if (typeof window !== "undefined") {
|
|
|
- localStorage.removeItem("token");
|
|
|
+ localStorage.removeItem(TOKEN_KEY);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -70,8 +71,8 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
|
|
|
|
// Check if user is logged in on mount
|
|
|
useEffect(() => {
|
|
|
- const storedUser = localStorage.getItem("user");
|
|
|
- const storedToken = localStorage.getItem("token");
|
|
|
+ const storedUser = localStorage.getItem(USER_KEY);
|
|
|
+ const storedToken = localStorage.getItem(TOKEN_KEY);
|
|
|
|
|
|
if (storedUser && storedToken) {
|
|
|
try {
|
|
|
@@ -80,7 +81,7 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
|
setToken(storedToken);
|
|
|
} catch (error) {
|
|
|
console.error("Failed to parse user data:", error);
|
|
|
- localStorage.removeItem("user");
|
|
|
+ localStorage.removeItem(USER_KEY);
|
|
|
clearToken();
|
|
|
}
|
|
|
}
|
|
|
@@ -133,7 +134,7 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
|
|
|
|
// Store user info
|
|
|
setUser(userData);
|
|
|
- localStorage.setItem("user", JSON.stringify(userData));
|
|
|
+ localStorage.setItem(USER_KEY, JSON.stringify(userData));
|
|
|
|
|
|
message.open({
|
|
|
content: "登录成功!",
|
|
|
@@ -157,7 +158,7 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
|
} finally {
|
|
|
// Clear local state
|
|
|
setUser(null);
|
|
|
- localStorage.removeItem("user");
|
|
|
+ localStorage.removeItem(USER_KEY);
|
|
|
clearToken();
|
|
|
message.open({
|
|
|
content: "已退出登录",
|