fix(crm): catálogo de permisos no cargaba por redirect 307 (slash final)

permissionsAPI.list pegaba a /v1/core/permissions/ (con slash); la ruta backend
es @router.get("") sin slash, así que FastAPI devolvía 307 y el cliente no lo
seguía → "No se pudieron cargar roles/permisos". Se quitan los slash finales de
list/getById/create/update/delete/getModules/getActions para que matcheen exacto.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ernesto Herrera
2026-07-17 16:51:18 -06:00
parent de9e35c501
commit 0d8c4ddf62

View File

@@ -57,7 +57,9 @@ export const permissionsAPI = {
if (params?.action) queryParams.set('action', params.action);
if (params?.search) queryParams.set('search', params.search);
const query = queryParams.toString();
const response = await api.get(`/v1/core/permissions/${query ? '?' + query : ''}`);
// Sin slash final: la ruta backend es @router.get("") = /v1/core/permissions.
// Con slash FastAPI responde 307 y el cliente server-side no lo sigue.
const response = await api.get(`/v1/core/permissions${query ? '?' + query : ''}`);
return response.data;
},
@@ -65,7 +67,7 @@ export const permissionsAPI = {
* Obtener un permiso por ID
*/
async getById(id: number): Promise<Permission> {
const response = await api.get(`/v1/core/permissions/${id}/`);
const response = await api.get(`/v1/core/permissions/${id}`);
return response.data;
},
@@ -73,7 +75,7 @@ export const permissionsAPI = {
* Crear un nuevo permiso
*/
async create(data: CreatePermissionData): Promise<Permission> {
const response = await api.post('/v1/core/permissions/', data);
const response = await api.post('/v1/core/permissions', data);
return response.data;
},
@@ -81,7 +83,7 @@ export const permissionsAPI = {
* Actualizar un permiso
*/
async update(id: number, data: UpdatePermissionData): Promise<Permission> {
const response = await api.put(`/v1/core/permissions/${id}/`, data);
const response = await api.put(`/v1/core/permissions/${id}`, data);
return response.data;
},
@@ -89,14 +91,14 @@ export const permissionsAPI = {
* Eliminar un permiso
*/
async delete(id: number): Promise<void> {
await api.delete(`/v1/core/permissions/${id}/`);
await api.delete(`/v1/core/permissions/${id}`);
},
/**
* Obtener módulos únicos
*/
async getModules(): Promise<string[]> {
const response = await api.get('/v1/core/permissions/modules/');
const response = await api.get('/v1/core/permissions/modules');
return response.data;
},
@@ -104,7 +106,7 @@ export const permissionsAPI = {
* Obtener acciones únicas
*/
async getActions(): Promise<string[]> {
const response = await api.get('/v1/core/permissions/actions/');
const response = await api.get('/v1/core/permissions/actions');
return response.data;
}
};