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');
    }
}