up
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
<?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.');
|
||||
Reference in New Issue
Block a user