fixed refresh token

This commit is contained in:
nquidox 2025-09-14 16:18:13 +03:00
parent a7c53edf79
commit 6ccdd0a003
2 changed files with 27 additions and 8 deletions

View file

@ -29,21 +29,35 @@ async function refreshAccessToken() {
if (isRefreshing) return refreshPromise; if (isRefreshing) return refreshPromise;
isRefreshing = true; isRefreshing = true;
refreshPromise = fetch(`${BASE_URL}/user/auth/refresh`, { refreshPromise = fetch(`${BASE_URL}/auth/refresh`, {
method: 'POST', method: 'POST',
credentials: 'include', credentials: 'include',
}) })
.then(async (res) => { .then(async (res) => {
if (!res.ok) throw new Error('Failed to refresh access token'); if (!res.ok) throw new Error('Failed to refresh access token');
return res.json(); const data = await res.json();
}) console.log("Refresh response data: ", data);
.then((data) => {
authStore.setToken(data.accessToken);
return data; return data;
}) })
.then((data) => {
const token = data.access_token
if (!token) {
throw new Error('No access_token in refresh response');
}
authStore.setToken(data.access_token);
console.log('refreshed token', data.access_token);
return data;
})
.catch((error) => { .catch((error) => {
throw error; throw error;
}) })
.finally(() => { .finally(() => {
isRefreshing = false; isRefreshing = false;
refreshPromise = null; refreshPromise = null;
@ -61,11 +75,16 @@ async function request(url, options = {}, isRetry = false) {
try { try {
const data = await refreshAccessToken(); const data = await refreshAccessToken();
const token = data.access_token;
if (!token) {
throw new Error('Refresh response did not contain access_token');
}
const newOptions = { const newOptions = {
...options, ...options,
headers: { headers: {
...options.headers, ...options.headers,
'Authorization': `Bearer ${data.accessToken}`, 'Authorization': `Bearer ${token}`,
}, },
}; };
return await request(url, newOptions, true); return await request(url, newOptions, true);

View file

@ -23,7 +23,7 @@ export const useAuthStore = defineStore('auth', () => {
const login = async (email, password) => { const login = async (email, password) => {
try { try {
const response = await apiClient.post('/user/auth/login', { email, password }) const response = await apiClient.post('/auth/login', { email, password })
const { access_token, user: userData } = response const { access_token, user: userData } = response
setToken(access_token) setToken(access_token)
@ -39,7 +39,7 @@ export const useAuthStore = defineStore('auth', () => {
setToken(null) setToken(null)
user.value = null user.value = null
try { try {
await apiClient.post('/user/auth/logout') await apiClient.post('/auth/logout')
} catch (error) { } catch (error) {
console.error('Logout error:', error) console.error('Logout error:', error)
} }