bindService(); $entry = $ldapObj->findUserByLogin($login); 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.'; } } catch (Throwable $e) { $erro = 'Erro ao consultar o AD: ' . $e->getMessage(); } } } 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 desativar o último administrador ativo do sistema.'; } else { AdminRepository::setActive($id, false); AuditLog::record($quemFez, 'desativou_admin', $admin['login']); $ok = 'Administrador desativado com sucesso.'; } } elseif ($acao === 'reativar') { $id = (int) ($_POST['id'] ?? 0); $admin = AdminRepository::find($id); if ($admin) { AdminRepository::setActive($id, true); 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.'; } } } $admins = AdminRepository::all(); View::header('Administradores'); ?>

Administradores do sistema

Login Nome Papel Status Ações
Ativo Inativo