diff --git a/public_html/admins.php b/public_html/admins.php index 8a775f9..cd0df29 100644 --- a/public_html/admins.php +++ b/public_html/admins.php @@ -23,11 +23,11 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $ldapObj = new Ldap(); $ldapObj->bindService(); $entry = $ldapObj->findUserByLogin($login); - $nome = $entry['displayname'][0] ?? null; if ($entry === null) { $erro = 'Login não encontrado no AD. Confira e tente novamente.'; } else { + $nome = $entry['displayname'][0] ?? null; AdminRepository::add($login, $nome, $papel, $quemFez); AuditLog::record($quemFez, 'adicionou_admin', $login, "papel={$papel}"); $ok = 'Administrador adicionado com sucesso.'; @@ -36,18 +36,18 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $erro = 'Erro ao consultar o AD: ' . $e->getMessage(); } } - } elseif ($acao === 'remover') { + } elseif ($acao === 'desativar') { $id = (int) ($_POST['id'] ?? 0); $admin = AdminRepository::find($id); if (!$admin) { $erro = 'Administrador não encontrado.'; } elseif ($admin['papel'] === 'admin' && AdminRepository::countActiveAdmins($id) === 0) { - $erro = 'Não é possível remover o último administrador ativo do sistema.'; + $erro = 'Não é possível desativar o último administrador ativo do sistema.'; } else { AdminRepository::setActive($id, false); - AuditLog::record($quemFez, 'removeu_admin', $admin['login']); - $ok = 'Administrador removido (desativado) com sucesso.'; + AuditLog::record($quemFez, 'desativou_admin', $admin['login']); + $ok = 'Administrador desativado com sucesso.'; } } elseif ($acao === 'reativar') { $id = (int) ($_POST['id'] ?? 0); @@ -57,6 +57,22 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { AuditLog::record($quemFez, 'reativou_admin', $admin['login']); $ok = 'Administrador reativado.'; } + } elseif ($acao === 'atualizar_papel') { + $id = (int) ($_POST['id'] ?? 0); + $papel = ($_POST['papel'] ?? 'operador') === 'admin' ? 'admin' : 'operador'; + $admin = AdminRepository::find($id); + + if (!$admin) { + $erro = 'Administrador não encontrado.'; + } elseif ($admin['papel'] === 'admin' && $papel === 'operador' && AdminRepository::countActiveAdmins($id) === 0) { + $erro = 'Não é possível rebaixar o último administrador ativo do sistema.'; + } elseif ($admin['papel'] === $papel) { + $ok = 'Nenhuma alteração: o papel já era esse.'; + } else { + AdminRepository::setPapel($id, $papel); + AuditLog::record($quemFez, 'alterou_papel_admin', $admin['login'], "de={$admin['papel']} para={$papel}"); + $ok = 'Papel atualizado com sucesso.'; + } } } @@ -94,7 +110,21 @@ View::header('Administradores');