Loading cosiap_api/users/urls.py +1 −1 Original line number Diff line number Diff line Loading @@ -21,7 +21,7 @@ from .views import CustomTokenObtainPairView, CustomTokenRefreshView app_name = 'users' urlpatterns = [ path('token/', CustomTokenObtainPairView.as_view(), name='token_obtain_pair'), path('token/', CustomTokenObtainPairView.as_view(), name='token_obtain'), path('token/refresh/', CustomTokenRefreshView.as_view(), name='token_refresh'), path('usuarios/', views.usuario.as_view(), name = 'usuario-lista-crear'), Loading cosiap_frontend/src/api.js +17 −10 Original line number Diff line number Diff line Loading @@ -5,12 +5,12 @@ const apiUrl = "http://localhost:8000"; // Configuración de Axios const api = axios.create({ const ax = axios.create({ baseURL: apiUrl, }); // Interceptor de solicitud api.interceptors.request.use( ax.interceptors.request.use( (config) => { // Aquí puedes manipular la configuración de la solicitud antes de enviarla al servidor console.log('Solicitud enviada:', config); Loading @@ -26,7 +26,7 @@ api.interceptors.request.use( ); // Interceptor de respuesta api.interceptors.response.use( ax.interceptors.response.use( (response) => { // Aquí puedes manipular la respuesta antes de pasarla al código que la llamó console.log('Respuesta recibida:', response); Loading @@ -40,16 +40,23 @@ api.interceptors.response.use( ); //Endpoints predefinidos para acceder a la pagina const apiEndpoints = { const api = { //Obtener la instancia de axios axios: ax, //Enpoints del modulo Usuario usuarios: { get: () => api.get('/usuarios'), post: (data) => api.post('/usuarios', data), getById: (id) => api.get(`/usuarios/${id}`), update: (id, data) => api.put(`/usuarios/${id}`, data), delete: (id) => api.delete(`/usuarios/${id}`), get: () => ax.get('/usuarios'), post: (data) => ax.post('/usuarios', data), getById: (id) => ax.get(`/usuarios/${id}`), update: (id, data) => ax.put(`/usuarios/${id}`, data), delete: (id) => ax.delete(`/usuarios/${id}`), token: { login: (data) => ax.post('api/usuarios/token/',data), refresh: () => ax.post('api/usuarios/token/refresh/'), }, }, }; // Exportar los endpoints de la API export default apiEndpoints; No newline at end of file export default api; No newline at end of file cosiap_frontend/src/components/common/utility/Autenticador.jsx +5 −5 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ export const Autenticador = ({ children }) => { const buscarUsuario = async () => { console.log('setear session') try { const response = await api.post('api/usuarios/token/refresh/'); const response = await api.token.refresh(); setToken(response.data.access); } catch { setToken(null); Loading @@ -41,7 +41,7 @@ export const Autenticador = ({ children }) => { }, []); useLayoutEffect(() => { const interceptadorAccess = api.interceptors.request.use((config) => { const interceptadorAccess = api.axios.interceptors.request.use((config) => { console.log(`insertar token en request: ${token}`) config.headers.Authorization = !config.__retry && token ? `Bearer ${token}` : config.headers.Authorization; return config; Loading @@ -54,14 +54,14 @@ export const Autenticador = ({ children }) => { }, [token]); useLayoutEffect(() => { const interceptadorRefresh = api.interceptors.response.use( const interceptadorRefresh = api.axios.interceptors.response.use( (response) => response, async (error) => { const requestOriginal = error.config; console.log('error en la response'); if (error.response.status === 403 && error.response.data.message === 'Unauthorized') { try { const response = await api.post('api/usuarios/token/refresh/'); const response = await api.usuarios.token.refresh(); setToken(response.data.access); requestOriginal.headers.Authorization = `Bearer ${response.data.access}`; requestOriginal.__retry = true; Loading @@ -77,7 +77,7 @@ export const Autenticador = ({ children }) => { ); return () => { api.interceptors.response.eject(interceptadorRefresh); api.axios.interceptors.response.eject(interceptadorRefresh); }; }); return ( Loading Loading
cosiap_api/users/urls.py +1 −1 Original line number Diff line number Diff line Loading @@ -21,7 +21,7 @@ from .views import CustomTokenObtainPairView, CustomTokenRefreshView app_name = 'users' urlpatterns = [ path('token/', CustomTokenObtainPairView.as_view(), name='token_obtain_pair'), path('token/', CustomTokenObtainPairView.as_view(), name='token_obtain'), path('token/refresh/', CustomTokenRefreshView.as_view(), name='token_refresh'), path('usuarios/', views.usuario.as_view(), name = 'usuario-lista-crear'), Loading
cosiap_frontend/src/api.js +17 −10 Original line number Diff line number Diff line Loading @@ -5,12 +5,12 @@ const apiUrl = "http://localhost:8000"; // Configuración de Axios const api = axios.create({ const ax = axios.create({ baseURL: apiUrl, }); // Interceptor de solicitud api.interceptors.request.use( ax.interceptors.request.use( (config) => { // Aquí puedes manipular la configuración de la solicitud antes de enviarla al servidor console.log('Solicitud enviada:', config); Loading @@ -26,7 +26,7 @@ api.interceptors.request.use( ); // Interceptor de respuesta api.interceptors.response.use( ax.interceptors.response.use( (response) => { // Aquí puedes manipular la respuesta antes de pasarla al código que la llamó console.log('Respuesta recibida:', response); Loading @@ -40,16 +40,23 @@ api.interceptors.response.use( ); //Endpoints predefinidos para acceder a la pagina const apiEndpoints = { const api = { //Obtener la instancia de axios axios: ax, //Enpoints del modulo Usuario usuarios: { get: () => api.get('/usuarios'), post: (data) => api.post('/usuarios', data), getById: (id) => api.get(`/usuarios/${id}`), update: (id, data) => api.put(`/usuarios/${id}`, data), delete: (id) => api.delete(`/usuarios/${id}`), get: () => ax.get('/usuarios'), post: (data) => ax.post('/usuarios', data), getById: (id) => ax.get(`/usuarios/${id}`), update: (id, data) => ax.put(`/usuarios/${id}`, data), delete: (id) => ax.delete(`/usuarios/${id}`), token: { login: (data) => ax.post('api/usuarios/token/',data), refresh: () => ax.post('api/usuarios/token/refresh/'), }, }, }; // Exportar los endpoints de la API export default apiEndpoints; No newline at end of file export default api; No newline at end of file
cosiap_frontend/src/components/common/utility/Autenticador.jsx +5 −5 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ export const Autenticador = ({ children }) => { const buscarUsuario = async () => { console.log('setear session') try { const response = await api.post('api/usuarios/token/refresh/'); const response = await api.token.refresh(); setToken(response.data.access); } catch { setToken(null); Loading @@ -41,7 +41,7 @@ export const Autenticador = ({ children }) => { }, []); useLayoutEffect(() => { const interceptadorAccess = api.interceptors.request.use((config) => { const interceptadorAccess = api.axios.interceptors.request.use((config) => { console.log(`insertar token en request: ${token}`) config.headers.Authorization = !config.__retry && token ? `Bearer ${token}` : config.headers.Authorization; return config; Loading @@ -54,14 +54,14 @@ export const Autenticador = ({ children }) => { }, [token]); useLayoutEffect(() => { const interceptadorRefresh = api.interceptors.response.use( const interceptadorRefresh = api.axios.interceptors.response.use( (response) => response, async (error) => { const requestOriginal = error.config; console.log('error en la response'); if (error.response.status === 403 && error.response.data.message === 'Unauthorized') { try { const response = await api.post('api/usuarios/token/refresh/'); const response = await api.usuarios.token.refresh(); setToken(response.data.access); requestOriginal.headers.Authorization = `Bearer ${response.data.access}`; requestOriginal.__retry = true; Loading @@ -77,7 +77,7 @@ export const Autenticador = ({ children }) => { ); return () => { api.interceptors.response.eject(interceptadorRefresh); api.axios.interceptors.response.eject(interceptadorRefresh); }; }); return ( Loading