apiBaseUrl = 'http://127.0.0.1:8000/api'; } public function showLoginForm() { return view('auth.login'); } public function showVerifyForm() { if (!session('user_id')) { return redirect()->route('login'); } return view('auth.verify-2fa'); } public function login(Request $request) { $request->validate([ 'email' => 'required|email', 'password' => 'required', ]); $response = Http::post("{$this->apiBaseUrl}/employee/login", [ 'email' => $request->email, 'password' => $request->password, ]); if (!$response->successful()) { $response = Http::post("{$this->apiBaseUrl}/teacher/login", [ 'email' => $request->email, 'password' => $request->password, ]); } if ($response->successful()) { $data = $response->json(); session(['user_id' => $data['user_id']]); return redirect()->route('verify-2fa'); } return back()->withErrors([ 'email' => $response->json()['error'] ?? 'Invalid credentials', ]); } public function verify(Request $request) { $request->validate([ 'code' => 'required|digits:6', ]); $response = Http::post("{$this->apiBaseUrl}/employee/verify-2fa", [ 'user_id' => session('user_id'), 'code' => $request->code, ]); if (!$response->successful()) { $response = Http::post("{$this->apiBaseUrl}/teacher/verify-2fa", [ 'user_id' => session('user_id'), 'code' => $request->code, ]); } if ($response->successful()) { $data = $response->json(); Session::put([ 'api_token' => $data['token'], 'user_id' => $data['user']['id'] ?? null, 'user_name' => $data['user']['name'] ?? null, 'user_role' => $data['user']['roles_id'] ?? null, ]); return redirect()->intended('/dashboard'); } return back()->withErrors([ 'code' => $response->json()['error'] ?? 'Invalid verification code', ]); } /** * @throws ConnectionException */ public function logout(Request $request) { $response = Http::withToken(Session::get('api_token')) ->post("{$this->apiBaseUrl}/employee/logout"); $request->session()->invalidate(); return redirect('/login'); } }