Autenticação e Segurança (Auth)¶
O módulo de Autenticação do Core não substitui o sistema de login padrão do Moodle (LDAP, Manual, SAML), mas atua como uma camada de segurança e resolução de identidade para todas as operações realizadas dentro do plugin MIDDAG.
Sua função principal é garantir que nenhuma ação seja executada sem um usuário válido e que as regras de permissão (Capabilities) sejam aplicadas de forma consistente, seja em uma página HTML, uma chamada API ou um comando de terminal.
Gerenciamento de Identidade¶
Em ambientes integrados, o "ID do Moodle" (um número sequencial como 452) raramente é suficiente. O módulo de Auth do MIDDAG implementa um Resolvedor de Identidade robusto.
Resolução Flexível¶
O sistema permite localizar usuários de forma segura através de múltiplos identificadores, essencial para integrações (Webhooks e APIs):
- ID Interno: O padrão do Moodle (
id). - ID Number: Código de matrícula ou CPF (
idnumber). - Username: O login do usuário (
username). - E-mail: Endereço de correio eletrônico (
email). - UUID: Um identificador universal único gerado pelo MIDDAG para integrações anônimas.
Controle de Acesso (ACL)¶
O MIDDAG centraliza a verificação de permissões para evitar a fragmentação de regras de segurança.
Contexto Automático¶
Ao acessar qualquer recurso do plugin, o sistema de Auth determina automaticamente o Contexto (Sistema, Categoria ou Curso). Isso impede falhas comuns onde um administrador de categoria consegue alterar dados de outra categoria por erro de código.
Capabilities Mapeadas¶
O plugin define capacidades granulares que podem ser atribuídas a papéis (Roles) no Moodle:
| Capability | Descrição |
|---|---|
local/middag:view |
Permissão básica para visualizar seus próprios dados. |
local/middag:manage |
Acesso administrativo total ao painel do plugin. |
local/middag:manage_extensions |
Permissão para ativar/desativar extensões. |
local/middag:view_reports |
Acesso de leitura aos dashboards e logs. |
Proteção de APIs¶
Para extensões que expõem dados via API (como o Ecommerce ou App Mobile), o módulo de Auth fornece guardas de segurança adicionais:
1. Validação de Token¶
Verifica se as requisições externas possuem chaves de API válidas e ativas, rejeitando tráfego não autorizado na borda da aplicação.
2. Impersonificação Segura (Login As)¶
Permite que administradores realizem ações "em nome de" outros usuários (ex: um atendente de suporte matriculando um aluno) sem precisar saber a senha do aluno. O sistema de Logs e Auditoria registra claramente que a ação foi feita por um administrador impersonando o aluno, mantendo a integridade do histórico.
Para Desenvolvedores¶
Ao criar novos Controllers ou Services, nunca verifique permissões manualmente usando funções nativas (has_capability). Utilize a abstração do Core.
No Controller¶
Use o Trait interacts_with_auth para proteger rotas:
public function settings(): Response
{
// Lança exceção 'moodle_exception' automaticamente se falhar
$this->require_capability('local/middag:manage');
// ...
}
No Service¶
Se você precisa verificar permissões dentro de uma lógica de negócio complexa: