Autenticação
Sistema completo de autenticação com suporte a 2FA, RBAC, brute-force, remember-me e LGPD.
Auth
use Blumiga\auth\Auth;
$auth = new Auth([
'password_algo' => PASSWORD_ARGON2ID,
'session_fingerprint' => true,
'session_expiry' => 120, // minutos
'remember_lifetime' => 30, // dias
'brute_force_max' => 5,
'brute_force_window' => 300,
'min_password_length' => 8,
'require_mixed_case' => true,
'require_numbers' => true,
'require_symbols' => true,
]);
// Registrar
$auth->register(['email' => 'user@email.com', 'password' => 'Str0ng!Pass']);
$auth->sendSecurityHeaders(); Login
if ($auth->login(['email' => $email, 'password' => $pass], true)) {
// Autenticado! (true = remember-me)
}
// Verificar
if ($auth->check()) {
$user = $auth->user();
$userId = $auth->id();
}
// Logout
$auth->logout(); TOTP (2FA)
$secret = $auth->totp()->generateSecret();
$qrCode = $auth->totp()->getQRCode('user@email.com', $secret);
// Validar
if ($auth->totp()->verify($userInput, $secret)) {
$auth->totp()->enable($userId, $secret);
} RBAC
// Constantes pré-definidas
RBAC::ALL_GROUPS; // 5 grupos
RBAC::ALL_PERMISSIONS; // 7 permissões
// Verificar
$rbac = new RBAC($userId);
if ($rbac->hasPermission('admin.access')) {
// Acesso permitido
} Password Reset
$reset = new PasswordReset();
$reset->sendResetLink('user@email.com');
$reset->resetPassword($token, 'Nova@Senha123'); Magic Link
$magic = new MagicLink();
$magic->send('user@email.com', '/dashboard');
// Usuário clica no link e é autenticado automaticamente LGPD
// Consentimento
$consent = new Consentimento();
$consent->registrarConsentimento($userId, 'marketing', true);
// Exportar dados
$export = new Exportador();
$dados = $export->exportarUsuario($userId);
// Mascarar dados
$mask = new Mascaramento();
$mask->mascararEmail('user@email.com'); // u***@e***.com Segurança
// Headers de segurança automáticos
$auth->sendSecurityHeaders();
$auth->contentSecurityPolicy("default-src 'self'");
// Honeypot para bots
$honeypot = new Honeypot();
$honeypot->render(); // Campo oculto
if ($honeypot->wasHoneypotTriggered()) {
// Provável bot
}