README.md 3.06 KB

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

  1. 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 que public_html/ deste projeto substitua (ou vire) o /home/labinfo/public_html do site, e src/, 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/app
    

    Depois ajuste os links/symlinks ou mova public_html conforme a estrutura real do docroot do site.

  2. Criar as tabelas no banco:

    mysql -h <host> -u '<usuario_do_banco>' -p <nome_do_banco> < sql/schema.sql
    
  3. Criar config/local.php a partir de config/config.example.php preenchendo:

    • db.pass com a senha gerada pelo Puppet (me repassa por fora do catálogo).
    • ldap.service_user / ldap.service_pass com uma conta de serviço (peça delegação restrita à OU/grupo de alunos — não domain admin).
    • app.session_secret com bin2hex(random_bytes(32)).
  4. Garantir que storage/ tem permissão de escrita pelo usuário do PHP-FPM do site (para audit.log), e que config/local.php está fora do alcance público (confirmar que .php nunca é servido como texto puro — padrão do PHP já cobre isso).

  5. 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');
    
  6. 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).

Papéis

  • admin: tudo que operador pode, mais gerenciar admins.php e settings.php.
  • operador: só habilita/desabilita aluno e reseta senha no dashboard.php.

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).