hatayı yazarsan bakalım hocam ? ama kısaca söyle anlatabilirim sana her namespace yeni php dosyası
Route::post('/verify-2fa', [TwoFactorController::class, 'verify'])->name('verify.2fa');
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cookie;
class TwoFactorController extends Controller
{
public function verify(Request $request)
{
$userInput = $request->input('2fa_code');
$correct2faCode = '123456';
if ($userInput == $correct2faCode) {
$token = $this->generateSecureToken($request->user()->id);
$cookie = cookie('remember_me', $token, 30 * 24 * 60);
return response('2FA doğrulaması başarılı')->cookie($cookie);
} else {
return response('2FA doğrulaması başarısız', 403);
}
}
private function generateSecureToken($userId)
{
return hash('sha256', $userId . str_random(60));
}
}
Route::post('/login', [LoginController::class, 'login'])->name('login');
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Cookie;
class LoginController extends Controller
{
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
$rememberMeToken = $request->cookie('remember_me');
if (Auth::attempt($credentials)) {
if ($rememberMeToken && $this->verifyToken($rememberMeToken, Auth::user()->id)) {
return response('Login successful without 2FA');
} else {
// 2FA doğrulaması yapın
return response('Please complete 2FA verification');
}
} else {
return response('Login failed', 403);
}
}
private function verifyToken($token, $userId)
{
return hash('sha256', $userId . str_random(60)) === $token;
}
}
namespace Tests\Feature;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Auth;
class LoginTest extends TestCase
{
use RefreshDatabase;
public function test_login_with_2fa()
{
$user = User::factory()->create([
'email' => 'test@example.com',
'password' => bcrypt('password'),
]);
$response = $this->post('/login', [
'email' => 'test@example.com',
'password' => 'password'
]);
$response->assertSee('Please complete 2FA verification');
}
public function test_login_with_remember_me_cookie()
{
$user = User::factory()->create([
'email' => 'test@example.com',
'password' => bcrypt('password'),
]);
$token = hash('sha256', $user->id . str_random(60));
$cookie = cookie('remember_me', $token, 30 * 24 * 60);
$response = $this->withCookie($cookie)->post('/login', [
'email' => 'test@example.com',
'password' => 'password'
]);
$response->assertSee('Login successful without 2FA');
}
}