Gestão de Alunos (AD) - LabInfo
Sistema independente (sem WordPress) para habilitar/desabilitar contas de aluno no AD e resetar senha, com controle de acesso gerenciado pela própria aplicação.
Deploy no pandora
No pandora, clonar o repositório (é privado — use uma chave SSH já autorizada no GitLab, ou um deploy token) direto em
/home/labinfo/, de forma quepublic_html/deste projeto substitua (ou vire) o/home/labinfo/public_htmldo site, esrc/,config/,storage/,sql/fiquem um nível acima dele (fora da árvore servida publicamente):git clone git@git.cachoeiro.ifes.edu.br:1652445/lab-info.git /home/labinfo/appDepois ajuste os links/symlinks ou mova
public_htmlconforme a estrutura real do docroot do site.Criar as tabelas no banco:
mysql -h <host> -u '<usuario_do_banco>' -p <nome_do_banco> < sql/schema.sqlCriar
config/local.phpa partir deconfig/config.example.phppreenchendo:db.passcom a senha gerada pelo Puppet (me repassa por fora do catálogo).ldap.service_user/ldap.service_passcom uma conta de serviço (peça delegação restrita à OU/grupo de alunos — não domain admin).app.session_secretcombin2hex(random_bytes(32)).
Garantir que
storage/tem permissão de escrita pelo usuário do PHP-FPM do site (paraaudit.log), e queconfig/local.phpestá fora do alcance público (confirmar que.phpnunca é servido como texto puro — padrão do PHP já cobre isso).Cadastrar o primeiro administrador direto no banco (seed), já que a tela de administradores exige estar logado como admin:
INSERT INTO admins (login, papel, criado_por) VALUES ('<seu-login-do-ad>', 'admin', 'seed');Acessar
https://labinfo.cachoeiro.ifes.edu.br/, logar com usuário/senha do AD e confirmar que o dashboard carrega os alunos do grupo configurado.
Estrutura
public_html/— document root (único diretório exposto na web).src/— classes PHP (LDAP, Auth, repositórios, log).config/— config.example.php versionado;local.php(real) nunca versionado.sql/schema.sql— schema do banco (admins, settings, audit_log, login_attempts).storage/— log de auditoria em arquivo (complementar ao banco).
URLs amigáveis
O public_html/.htaccess esconde a extensão .php (requer mod_rewrite e
AllowOverride FileInfo/Limit no vhost, já presentes na config desse site):
/dashboard, /admins, /auditoria, /settings, /logout etc. em vez de
dashboard.php, admins.php... Acessar o .php direto redireciona pra URL limpa.
Papéis
- admin: tudo que operador pode, mais gerenciar administradores e configurações.
- operador: só habilita/desabilita aluno e reseta senha no dashboard.
A autenticação de quem usa o sistema é sempre feita com login e senha do próprio AD
(bind LDAP) — o banco não armazena nenhuma senha. A tabela admins só guarda
quem está autorizado a entrar e com qual papel (login, nome, papel), funcionando como
uma lista de permissão: se o login/senha do AD estiverem corretos mas o login não
estiver cadastrado (e ativo) em admins, o acesso ao sistema é negado mesmo assim.
Não existe mais lista de SIAPE fixa no código — todo acesso é via tabela admins,
editável pela tela (exceto o primeiro admin, que precisa de uma inserção manual inicial).