<?php
namespace App\Http\Controllers;
use App\Models\Karyawan;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Validator;
class ForgotPasswordController extends Controller
{
/**
* Write code on Method
*
* @return response()
*/
public function showForgetPasswordForm()
{
return view('auth.forgetPassword');
}
/**
* Write code on Method
*
* @return response()
*/
public function submitForgetPasswordForm(Request $request)
{
DB::beginTransaction();
try {
$validator = Validator::make($request->all(), [
'email' => 'required|email',
]);
if ($validator->fails()) {
return $validator->messages();
}
$karyawan = Karyawan::where('email', $request->email)->first();
if (!$karyawan) {
return response()->json(['error' => 'User not found'],402);
}
$token = Str::random(64);
DB::table('password_resets')->insert([
'email' => $request->email,
'token' => $token,
'created_at' => Carbon::now()
]);
Mail::send('email.forgetPassword', ['token' => $token], function ($message) use ($request) {
$message->to($request->email);
$message->subject('Reset Password');
});
DB::commit();
} catch (\Throwable $th) {
DB::rollBack();
return response()->json(['error' => 'Failed to send mail'],500);
}
return response()->json(['message' => 'We have e-mailed your password reset link!'],200);
}
/**
* Write code on Method
*
* @return response()
*/
public function showResetPasswordForm($token)
{
$resetPasword = DB::table('password_resets')
->where([
'token' => $token
])
->first();
if (!$resetPasword) {
return abort(404);
}
return view('auth.reset-password', ['token' => $token, 'resetPasword' => $resetPasword]);
}
/**
* Write code on Method
*
* @return response()
*/
public function submitResetPasswordForm(Request $request)
{
$request->validate([
'email' => 'required|email',
'password' => 'required|string|min:6|confirmed',
'password_confirmation' => 'required'
]);
$updatePassword = DB::table('password_resets')
->where([
'email' => $request->email,
'token' => $request->token
])
->first();
if (!$updatePassword) {
return back()->withInput()->with('error', 'Invalid token!');
}
$user = Karyawan::where('email', $request->email)
->update(['password' => Hash::make($request->password)]);
DB::table('password_resets')->where(['email' => $request->email])->delete();
return redirect('/login')->with('message', 'Your password has been changed!');
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]