Conn2Flow
Navegação das docs

Referência / Bibliotecas

Biblioteca 2fa.php

Segundo fator de autenticação: TOTP compatível com aplicativos autenticadores e código de 6 dígitos por e-mail.

Caminho no Gestor bibliotecas/2fa.php

Implementa os dois segundos fatores do login: TOTP (RFC 6238, o código de 30 segundos do Google Authenticator, Authy e similares) e código por e-mail. As telas e o fluxo ficam no módulo perfil-usuario (signin-2fa/ e o equivalente no OAuth); a biblioteca só calcula, valida e envia.

Os dados ficam na tabela usuarios: two_factor_enabled, two_factor_type (app ou email), two_factor_secret, two_factor_email_code e two_factor_email_expire. Os métodos oferecidos saem de AUTH_2FA_METHOD_APP e AUTH_2FA_METHOD_EMAIL (padrão true) no .env.

TOTP

gestor_incluir_biblioteca('2fa');
$secret = two_factor_generate_secret();              // 16 caracteres Base32 = 80 bits
$uri    = two_factor_get_qr_code($email, $secret);   // otpauth://totp/Conn2Flow:<email>?secret=…
// renderize $uri como QR Code; grave $secret em usuarios.two_factor_secret
$ok = two_factor_validate_code($secret, $codigoDigitado);
  • SHA-1, 6 dígitos, período de 30 s, com tolerância de um período para trás e um para frente (o código vale por até 90 s).

  • two_factor_generate_secret($n) aceita no mínimo 16 caracteres.

  • O emissor mostrado no aplicativo é sempre Conn2Flow, não o nome do site.

  • O segredo fica em texto claro no banco.

Código por e-mail

  • two_factor_email_send_code($id_usuarios, $email) sorteia 6 dígitos, grava com validade de 5 minutos (substituindo qualquer código anterior) e envia com comunicacao_email(). O assunto e o texto do e-mail são fixos em português.

  • two_factor_email_validate($id_usuarios, $codigo) confere valor e prazo e apaga o código ao aceitar, impedindo o reuso.

O perfil-usuario acrescenta os códigos de recuperação (req-119), tentados só quando o segundo fator falha e válidos uma vez cada.

Auxiliares internos (usados pelas funções acima; raramente chamados direto): two_factor_base32_encode(), two_factor_base32_decode(), two_factor_hotp().

Funções

Gerado a partir de gestor/bibliotecas/2fa.php · 8 funções

8 de 8

two_factor_get_qr_code

ver no código · linha 109 ↗
two_factor_get_qr_code(string $email, string $secret): string

Monta a URI otpauth:// para renderização em QR Code.

Parâmetros

$emailstring
E-mail / conta do usuário (rótulo da conta).
$secretstring
Segredo Base32.

Retorno

string
URI otpauth.

two_factor_hotp

ver no código · linha 126 ↗
two_factor_hotp(string $secret, int $counter): string

Calcula um código HOTP (RFC 4226) para um contador específico.

Parâmetros

$secretstring
Segredo Base32.
$counterint
Contador (no TOTP é floor(time()/30)).

Retorno

string
Código de 6 dígitos.

two_factor_validate_code

ver no código · linha 155 ↗
two_factor_validate_code(string $secret, string $code): bool

Valida um código TOTP informado pelo usuário, com tolerância de ±1 ciclo de 30s.

Parâmetros

$secretstring
Segredo Base32 do usuário.
$codestring
Código de 6 dígitos informado.

Retorno

bool
true se o código for válido na janela de tempo.

two_factor_email_send_code

ver no código · linha 178 ↗
two_factor_email_send_code(int $usuario_id, string $email): bool

Gera um código numérico de 6 dígitos, grava-o no usuário com validade de 5 minutos e o envia por e-mail HTML.

Parâmetros

$usuario_idint
ID do usuário (coluna id_usuarios).
$emailstring
E-mail de destino.

Retorno

bool
true se o e-mail foi enviado.

two_factor_email_validate

ver no código · linha 223 ↗
two_factor_email_validate(int $usuario_id, string $code): bool

Valida o código 2FA enviado por e-mail, conferindo valor e prazo de validade. Em caso de sucesso, limpa o código para impedir reutilização.

Parâmetros

$usuario_idint
ID do usuário (coluna id_usuarios).
$codestring
Código de 6 dígitos informado.

Retorno

bool
true se o código for válido e estiver dentro do prazo.

O Futuro é Híbrido: Humano + IA.

O Conn2Flow é a ferramenta. Se você precisa do Arquiteto para desenhar a estratégia da sua empresa usando essa tecnologia...

Contrate Consultoria Especializada