Pular para conteúdo

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:

use local_middag\core\service\auth_service;

$auth = middag::get(auth_service::class);

if ($auth->user_can_edit_course($courseid)) {
    // Lógica permitida
}