authenticate(); $user = Auth::user(); // Logout sementara, login penuh hanya setelah OTP Auth::guard('web')->logout(); if (!$user) { return redirect()->route('login'); } // Cek akun aktif if (!(int) $user->is_active) { return redirect()->route('login') ->withErrors(['email' => 'Akun tidak aktif. Hubungi admin.']); } // Ambil role $roleName = strtolower(trim((string) DB::table('roles') ->where('id', $user->role_id) ->value('nama_role'))); // Semua role wajib OTP $code = $this->otpService->generate($user); $sent = $this->otpService->sendEmail($user, $code); if (!$sent) { return redirect()->route('login') ->withErrors(['email' => 'Gagal mengirim kode OTP. Periksa koneksi internet atau email Anda dan coba lagi.']); } session([ 'otp_user_id' => $user->id, 'otp_role' => $roleName, ]); return redirect()->route('otp.form'); } public function destroy(Request $request): RedirectResponse { Auth::guard('web')->logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return redirect()->route('landingpage'); } }