29 lines
923 B
PHP
29 lines
923 B
PHP
<?php
|
|
/**
|
|
* POST /api/lab/delete_role.php
|
|
* Elimina un rol no-sistema.
|
|
* Solo admins.
|
|
*
|
|
* Body JSON: { id }
|
|
*/
|
|
require_once __DIR__ . '/_helpers.php';
|
|
requireMethod('POST');
|
|
requireAdmin();
|
|
|
|
$body = inputJson();
|
|
$id = (int)($body['id'] ?? 0);
|
|
if (!$id) jsonError('ID de rol requerido');
|
|
|
|
$db = Database::getInstance();
|
|
$role = $db->fetch("SELECT id, is_system, slug FROM roles WHERE id = ?", [$id]);
|
|
if (!$role) jsonError('Rol no encontrado', 404);
|
|
if ($role['is_system']) jsonError('Los roles del sistema no se pueden eliminar');
|
|
|
|
// Reasignar usuarios que tengan este rol al rol admin (id=1) antes de borrar
|
|
$db->query("UPDATE admin_users SET role_id = 1, role = 'admin' WHERE role_id = ?", [$id]);
|
|
|
|
// La FK ON DELETE CASCADE borra role_modules automáticamente
|
|
$db->query("DELETE FROM roles WHERE id = ?", [$id]);
|
|
|
|
jsonOk([], 'Rol eliminado. Los usuarios afectados fueron reasignados al rol Administrador.');
|