60 lines
2.4 KiB
TypeScript

import api from "../../../services/api"
import type {
PermissionTypesResponse,
RolePermissionsResponse,
UpdateRolePermissionsData,
UpdateRolePermissionsResponse
} from '../types/permissions'
export const permissionsService = {
/**
* Obtiene todos los tipos de permisos con sus permisos asociados
* @returns Promise con la respuesta de la API conteniendo los tipos de permisos y permisos
*/
async getAllPermissionTypes() {
try {
console.log('Obteniendo todos los tipos de permisos...');
const response = await api.get<PermissionTypesResponse>('/api/permission-types/all-with-permissions');
console.log('Tipos de permisos obtenidos:', response.data);
return response;
} catch (error) {
console.error('Error al obtener tipos de permisos:', error);
throw error;
}
},
/**
* Obtiene los permisos asignados a un rol específico
* @param roleId - ID del rol del cual obtener los permisos
* @returns Promise con la respuesta de la API conteniendo los permisos del rol
*/
async getRolePermissions(roleId: number) {
try {
console.log(`Obteniendo permisos del rol ${roleId}...`);
const response = await api.get<RolePermissionsResponse>(`/api/admin/roles/${roleId}/permissions`);
console.log(`Permisos del rol ${roleId} obtenidos:`, response.data);
return response;
} catch (error) {
console.error(`Error al obtener permisos del rol ${roleId}:`, error);
throw error;
}
},
/**
* Actualiza los permisos asignados a un rol específico
* @param roleId - ID del rol al cual asignar los permisos
* @param data - Objeto con el array de IDs de permisos a asignar
* @returns Promise con la respuesta de la API
*/
async updateRolePermissions(roleId: number, data: UpdateRolePermissionsData) {
try {
console.log(`Actualizando permisos del rol ${roleId}...`, data);
const response = await api.put<UpdateRolePermissionsResponse>(`/api/admin/roles/${roleId}/permissions`, data);
console.log(`Permisos del rol ${roleId} actualizados:`, response.data);
return response;
} catch (error) {
console.error(`Error al actualizar permisos del rol ${roleId}:`, error);
throw error;
}
}
};