diff --git a/app/Http/Controllers/Auth/LupaPasswordController.php b/app/Http/Controllers/Auth/LupaPasswordController.php new file mode 100644 index 0000000..a9c7e68 --- /dev/null +++ b/app/Http/Controllers/Auth/LupaPasswordController.php @@ -0,0 +1,115 @@ +validate([ + 'email' => 'required|email|exists:accounts,email', + ]); + + $otp = rand(100000, 999999); + + // Simpan OTP ke database + $account = Account::where('email', $request->email)->first(); + $account->otp_code = $otp; + $account->otp_expires_at = Carbon::now()->addMinutes(10); + $account->save(); + + try { + // Kirim OTP ke email + Mail::raw("Kode OTP Anda adalah: $otp. OTP ini berlaku selama 10 menit.", function ($message) use ($request) { + $message->to($request->email) + ->subject('Reset Password OTP'); + }); + } catch (\Exception $e) { + return back()->withErrors(['email' => 'Gagal mengirim email. Silakan coba lagi.']); + } + + return redirect()->route('otp.form')->with('email', $request->email); + } + + public function verifyOtp(Request $request) + { + $request->validate([ + 'email' => 'required|email', + 'otp_code' => 'required', + ]); + + // Cari akun berdasarkan email dan kode OTP yang valid + $account = Account::where('email', $request->email) + ->where('otp_code', $request->otp_code) + ->where('otp_expires_at', '>', Carbon::now()) + ->first(); + + // Log untuk debugging + Log::debug('Verifikasi OTP: ', [ + 'email' => $request->email, + 'otp_code' => $request->otp_code, + 'otp_expires_at' => $account ? $account->otp_expires_at : 'null', + 'found_account' => $account ? 'true' : 'false', + ]); + + if (!$account) { + return back()->withErrors(['otp_code' => 'Kode OTP tidak valid atau sudah kedaluwarsa.']); + } + + // OTP valid, simpan email di session dan arahkan ke form reset password + session(['email' => $request->email]); + + return redirect()->route('reset.password.form'); + } + + + + // Reset password + public function resetPassword(Request $request) + { + Log::debug('Reset Password Request:', $request->all()); + + $request->validate([ + 'email' => 'required|email', + 'password' => 'required|confirmed|min:6', + ]); + + $account = Account::where('email', $request->email)->firstOrFail(); + + $account->password = Hash::make($request->password); + $account->otp_code = null; + $account->otp_expires_at = null; + $account->save(); + + return redirect()->route('login')->with('success', 'Password berhasil direset.'); + } +} diff --git a/resources/views/layouts/inputemail.blade.php b/resources/views/layouts/inputemail.blade.php new file mode 100644 index 0000000..9649394 --- /dev/null +++ b/resources/views/layouts/inputemail.blade.php @@ -0,0 +1,46 @@ +@extends('layouts.auth') + +@section('title', 'Lupa Password') + +@section('content') + + + +
Don't have an account? Register
+Lupa kata sandi? Lupa Password
+Tidak mempunyai akun? Register
diff --git a/resources/views/layouts/otp.blade.php b/resources/views/layouts/otp.blade.php new file mode 100644 index 0000000..479bded --- /dev/null +++ b/resources/views/layouts/otp.blade.php @@ -0,0 +1,46 @@ +@extends('layouts.auth') + +@section('title', 'Otp') + +@section('content') + + + +Already have an account? Login
+Sudah Memiliki Akun? Login
diff --git a/resources/views/layouts/resetpass.blade.php b/resources/views/layouts/resetpass.blade.php new file mode 100644 index 0000000..27bb16c --- /dev/null +++ b/resources/views/layouts/resetpass.blade.php @@ -0,0 +1,59 @@ +@extends('layouts.auth') + +@section('title', 'Reset Sandi') + +@section('content') + + + +Gallyndra Fatkhu Dinata, S.P., M.P. merupakan dosen di Jurusan Produksi Pertanian, Politeknik Negeri Jember. - Beliau memiliki keahlian dalam bidang budidaya pertanian dan pengelolaan tanaman hortikultura, serta aktif dalam berbagai kegiatan penelitian pada tanaman maupun hama. + Beliau memiliki keahlian dalam bidang budidaya pertanian dan pengelolaan tanaman hortikultura, serta aktif dalam berbagai kegiatan penelitian pada tanaman. Sebagai pakar, beliau telah banyak membantu mahasiswa dalam mengembangkan penelitian yang aplikatif di bidang pertanian modern.