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