hide chat
This commit is contained in:
@@ -38,6 +38,50 @@ export const getToken = async () => {
|
||||
return localStorage.getItem(TOKEN_NAME);
|
||||
};
|
||||
|
||||
export const isAuthenticated = async (): Promise<boolean> => {
|
||||
if (typeof window === "undefined") {
|
||||
return false; // در سرور همیشه false
|
||||
}
|
||||
|
||||
const token = localStorage.getItem(TOKEN_NAME);
|
||||
const refreshToken = localStorage.getItem(REFRESH_TOKEN_NAME);
|
||||
|
||||
// اگر هیچ توکنی وجود ندارد
|
||||
if (!token && !refreshToken) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// اگر توکن وجود دارد، فرض میکنیم معتبر است (axios interceptor refresh را هندل میکند)
|
||||
if (token) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// اگر فقط refresh token وجود دارد، سعی میکنیم refresh کنیم
|
||||
if (refreshToken) {
|
||||
try {
|
||||
const { refreshToken: refreshTokenAPI } = await import(
|
||||
"../app/auth/service/Service"
|
||||
);
|
||||
const data = await refreshTokenAPI({ token: refreshToken });
|
||||
|
||||
if (data?.results?.data?.accessToken?.token) {
|
||||
await setToken(data.results.data.accessToken.token);
|
||||
if (data.results.data.refreshToken?.token) {
|
||||
await setRefreshToken(data.results.data.refreshToken.token);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("خطا در refresh token:", error);
|
||||
// پاک کردن توکنهای نامعتبر
|
||||
await removeToken();
|
||||
await removeRefreshToken();
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
export const getRefreshToken = async () => {
|
||||
if (typeof window === "undefined") {
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user