feat: implement premium Email 2FA authentication integrated with auth flow

This commit is contained in:
2026-05-21 21:46:53 +07:00
parent a0673129ee
commit 0d083765ff
50 changed files with 543 additions and 162 deletions
+2
View File
@@ -21,6 +21,7 @@ Route::get('/api/search', \App\Http\Controllers\GlobalSearchController::class)
// Two-Factor Challenge (guest — user is not yet fully authenticated)
Route::get('/two-factor/challenge', [\App\Http\Controllers\TwoFactorController::class, 'challenge'])->name('two-factor.challenge');
Route::post('/two-factor/challenge', [\App\Http\Controllers\TwoFactorController::class, 'verify'])->name('two-factor.verify');
Route::post('/two-factor/resend', [\App\Http\Controllers\TwoFactorController::class, 'resendCode'])->name('two-factor.resend');
// Dashboard
Route::get('/dashboard', [\App\Http\Controllers\DashboardController::class, 'index'])
@@ -74,6 +75,7 @@ Route::middleware(['auth', 'verified'])->group(function () {
Route::post('/two-factor/enable', [\App\Http\Controllers\TwoFactorController::class, 'enable'])->name('two-factor.enable');
Route::post('/two-factor/disable', [\App\Http\Controllers\TwoFactorController::class, 'disable'])->name('two-factor.disable');
Route::post('/two-factor/recovery-codes', [\App\Http\Controllers\TwoFactorController::class, 'regenerateCodes'])->name('two-factor.recovery-codes');
Route::post('/two-factor/email', [\App\Http\Controllers\TwoFactorController::class, 'toggleEmail'])->name('two-factor.email.toggle');
// Roles & Permissions
Route::get('/roles', [\App\Http\Controllers\RoleController::class, 'index'])->name('roles.index');