Viewing File: /home/ubuntu/vedadeals-backend-base/app/Http/Controllers/Admin/Auth/ForgotPasswordController.php
<?php
namespace App\Http\Controllers\Admin\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
use Illuminate\Http\Request;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Auth;
use App\Models\{ Admin, PasswordReset };
use DB, Hash, Setting, Validator, Exception;
use Carbon\Carbon;
use App\Http\Requests\Admin\Auth\{ ForgotPasswordRequest, ResetPasswordRequest };
use App\Jobs\SendEmailJob;
class ForgotPasswordController extends Controller
{
/*
|--------------------------------------------------------------------------
| Password Reset Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling password reset emails and
| includes a trait which assists in sending these notifications from
| your application to your users. Feel free to explore this trait.
|
*/
use SendsPasswordResetEmails;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
/**
* @method forgot_password
*
* @uses to show forgot password form
*
* @created
*
* @updated
*
* @param object
*
* @return forgot password page
*
**/
public function forgot_password() {
try{
if(!env('MAIL_USERNAME') || !env('MAIL_PASSWORD')) {
throw new Exception(tr('email_not_configured'));
}
return view('admin.auth.forgot_password');
} catch(Exception $e){
$error = $e->getMessage();
return redirect()->route('admin.login')->with('flash_error', $error);
}
}
/**
* @method forgot_password_update
*
* @uses to send an reset password mail
*
* @created
*
* @updated
*
* @param object
*
* @return
*
**/
public function forgot_password_update(ForgotPasswordRequest $request){
try {
DB::beginTransaction();
if(!env('MAIL_USERNAME') || !env('MAIL_PASSWORD')) {
throw new Exception(tr('email_not_configured'));
}
$admin = Admin::firstWhere('email', $request->email);
$token = app('auth.password.broker')->createToken($admin);
PasswordReset::where('email', $admin->email)->delete();
PasswordReset::insert([
'email' => $admin->email,
'token' => $token,
'created_at' => Carbon::now()
]);
$email_data['subject'] = tr('forgot_password_subject' , Setting::get('site_name'));
$email_data['email'] = $admin->email;
$email_data['name'] = $admin->name;
$email_data['user'] = $admin;
$email_data['page'] = "emails.admin.forgot_password";
$email_data['url'] = url('/admin')."/reset_password?token=".$token;
SendEmailJob::dispatch($email_data);
DB::commit();
return redirect()->back()->with('flash_success', tr('forgot_password_mail_sent_success') );
} catch(Exception $e) {
DB::rollback();
return redirect()->back()->withInput()->with('flash_error', $e->getMessage());
}
}
/**
* @method reset_password
*
* @uses to show reset password page
*
* @created
*
* @updated
*
* @param object
*
* @return response return view page
*
**/
public function reset_password() {
return view('admin.auth.reset_password');
}
/**
* @method reset_password_update()
*
* @uses to reset the password
*
* @created
*
* @updated
*
* @param object $request - reset_token
*
* @return to login page
*/
public function reset_password_update(ResetPasswordRequest $request) {
try {
DB::beginTransaction();
$password_reset = PasswordReset::where('token', $request->reset_token)->first();
$admin = Admin::where('email', $password_reset->email)->first();
$admin->password = Hash::make($request->password);
$admin->save();
PasswordReset::where('email', $admin->email)->delete();
DB::commit();
$email_data['subject'] = tr('reset_password_success' , Setting::get('site_name'));
$email_data['email'] = $admin->email;
$email_data['name'] = $admin->name;
$email_data['page'] = "emails.admin.reset_password"; // To send reset password success email.
SendEmailJob::dispatch($email_data);
// if successful, then redirect to their intended location
return redirect()->route('admin.login')->with('flash_success', tr('password_change_success') );
} catch(Exception $e) {
DB::rollback();
return redirect()->back()->withInput()->with('flash_error', $e->getMessage());
}
}
}
Back to Directory
File Manager