feat(Login): add example jwt token
This commit is contained in:
@@ -1,8 +1,38 @@
|
||||
import AuthService from '@/services/auth';
|
||||
|
||||
class DjangoApi {
|
||||
constructor() {
|
||||
this.base = import.meta.env.VITE_DJANGO_BASE_URL;
|
||||
}
|
||||
|
||||
_authHeaders() {
|
||||
const token = AuthService.getAccessToken();
|
||||
return token ? { Authorization: `Bearer ${token}` } : {};
|
||||
}
|
||||
|
||||
_handleResponse(response) {
|
||||
if (!response.ok) {
|
||||
// Si el token ha expirado (401) intentamos refrescar y re‑intentar
|
||||
if (response.status === 401) {
|
||||
return AuthService.refresh().then(newToken => {
|
||||
// volver a ejecutar la petición original con el nuevo token
|
||||
const retryHeaders = {
|
||||
...response.headers,
|
||||
Authorization: `Bearer ${newToken}`,
|
||||
};
|
||||
// aquí usamos fetch de nuevo con los mismos parámetros
|
||||
// (para simplificar, delegamos a getRequest/postRequest)
|
||||
// En la práctica, extrae la lógica a una función reutilizable.
|
||||
throw new Error('Retry logic should be implemented here');
|
||||
});
|
||||
}
|
||||
return response.json().then(err => {
|
||||
throw new Error(`Error ${response.status}: ${err.detail || response.statusText}`);
|
||||
});
|
||||
}
|
||||
return response.json();
|
||||
}
|
||||
|
||||
getCustomers() {
|
||||
const url = this.base + '/don_confiao/api/customers/';
|
||||
return this.getRequest(url);
|
||||
@@ -79,42 +109,23 @@ class DjangoApi {
|
||||
}
|
||||
|
||||
getRequest(url) {
|
||||
return new Promise ((resolve, reject) => {
|
||||
fetch(url)
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
resolve(data);
|
||||
})
|
||||
.catch(error => {
|
||||
reject(error);
|
||||
});
|
||||
});
|
||||
return fetch(url, {
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
...this._authHeaders(),
|
||||
},
|
||||
}).then(this._handleResponse);
|
||||
}
|
||||
|
||||
postRequest(url, content) {
|
||||
return new Promise((resolve, reject) => {
|
||||
fetch(url, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify(content)
|
||||
})
|
||||
.then(response => {
|
||||
if (!response.ok) {
|
||||
reject(new Error(`Error ${response.status}: ${response.statusText}`));
|
||||
} else {
|
||||
response.json().then(data => {
|
||||
if (!data) {
|
||||
reject(new Error('La respuesta no es un JSON válido'));
|
||||
} else {
|
||||
resolve(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch(error => reject(error));
|
||||
});
|
||||
return fetch(url, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
...this._authHeaders(),
|
||||
},
|
||||
body: JSON.stringify(content),
|
||||
}).then(this._handleResponse);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user