mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-28 17:43:47 +00:00
Add files via upload
This commit is contained in:
@@ -2,6 +2,8 @@
|
|||||||
* Утилиты для безопасной работы с JWT токенами
|
* Утилиты для безопасной работы с JWT токенами
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import axios from 'axios'
|
||||||
|
|
||||||
const TOKEN_KEYS = {
|
const TOKEN_KEYS = {
|
||||||
ACCESS: 'access_token',
|
ACCESS: 'access_token',
|
||||||
REFRESH: 'refresh_token',
|
REFRESH: 'refresh_token',
|
||||||
@@ -194,18 +196,14 @@ class TokenRefreshManager {
|
|||||||
|
|
||||||
private async doRefresh(refreshToken: string): Promise<string | null> {
|
private async doRefresh(refreshToken: string): Promise<string | null> {
|
||||||
try {
|
try {
|
||||||
const response = await fetch(this.refreshEndpoint, {
|
// Используем чистый axios (не apiClient) чтобы избежать циклической зависимости
|
||||||
method: 'POST',
|
const response = await axios.post<{ access_token?: string }>(
|
||||||
headers: { 'Content-Type': 'application/json' },
|
this.refreshEndpoint,
|
||||||
body: JSON.stringify({ refresh_token: refreshToken }),
|
{ refresh_token: refreshToken },
|
||||||
})
|
{ headers: { 'Content-Type': 'application/json' } }
|
||||||
|
)
|
||||||
|
|
||||||
if (!response.ok) {
|
const newAccessToken = response.data.access_token
|
||||||
throw new Error(`Refresh failed: ${response.status}`)
|
|
||||||
}
|
|
||||||
|
|
||||||
const data = await response.json()
|
|
||||||
const newAccessToken = data.access_token
|
|
||||||
|
|
||||||
if (newAccessToken) {
|
if (newAccessToken) {
|
||||||
tokenStorage.setAccessToken(newAccessToken)
|
tokenStorage.setAccessToken(newAccessToken)
|
||||||
|
|||||||
Reference in New Issue
Block a user