dashboard.php 2.85 KB
<?php

declare(strict_types=1);

require __DIR__ . '/../src/bootstrap.php';
Auth::requireLogin();

$erro = null;
$ok = null;

try {
    $ldap = new Ldap();
    $ldap->bindService();

    $groupFilter = SettingsRepository::get('group_aluno_filter', 'cn=grpCI-Aluno-Info');
    $logins = $ldap->groupMembers($groupFilter);

    $alunos = [];
    foreach ($logins as $cn) {
        $entry = $ldap->findUserByCn($cn);
        if ($entry === null) {
            continue;
        }
        $accountControl = (int) ($entry['useraccountcontrol'][0] ?? 0);
        $alunos[] = [
            'cn'          => $cn,
            'nome'        => $entry['sn'][0] ?? $cn,
            'habilitado'  => ($accountControl & 2) !== 2,
            'descricao'   => $entry['description'][0] ?? '',
        ];
    }
} catch (Throwable $e) {
    $erro = 'Não foi possível consultar o AD agora: ' . $e->getMessage();
    $alunos = [];
}

if (($_GET['ok'] ?? '') === '1') {
    $ok = 'Ação realizada com sucesso.';
} elseif (($_GET['erro'] ?? '') === '1') {
    $erro = $_GET['msg'] ?? 'Ocorreu um erro ao processar a ação.';
}

View::header('Alunos');
?>
<div class="card">
    <h1>Alunos do grupo</h1>

    <?php if ($erro): ?>
        <div class="alert error"><?= View::escape($erro) ?></div>
    <?php endif; ?>
    <?php if ($ok): ?>
        <div class="alert success"><?= View::escape($ok) ?></div>
    <?php endif; ?>

    <table>
        <tr>
            <th>Aluno</th>
            <th>Status</th>
            <th>Última alteração por</th>
            <th>Ações</th>
        </tr>
        <?php foreach ($alunos as $aluno): ?>
        <tr>
            <td><?= View::escape($aluno['nome']) ?></td>
            <td>
                <?php if ($aluno['habilitado']): ?>
                    <span class="badge ok">Habilitado</span>
                <?php else: ?>
                    <span class="badge off">Desabilitado</span>
                <?php endif; ?>
            </td>
            <td><?= View::escape($aluno['descricao']) ?></td>
            <td>
                <form method="post" action="action_status.php" style="display:inline">
                    <input type="hidden" name="user" value="<?= View::escape($aluno['cn']) ?>">
                    <input type="hidden" name="enable" value="<?= $aluno['habilitado'] ? '0' : '1' ?>">
                    <button type="submit" class="<?= $aluno['habilitado'] ? 'danger' : '' ?>">
                        <?= $aluno['habilitado'] ? 'Desabilitar' : 'Habilitar' ?>
                    </button>
                </form>
                <a class="btn secondary" href="newpasswd.php?user=<?= urlencode($aluno['cn']) ?>">Nova senha</a>
            </td>
        </tr>
        <?php endforeach; ?>
        <?php if (!$alunos && !$erro): ?>
        <tr><td colspan="4">Nenhum aluno encontrado no grupo.</td></tr>
        <?php endif; ?>
    </table>
</div>
<?php
View::footer();