App\Http\Controllers\AuthController::handleForgot PHP Method

handleForgot() public method

public handleForgot ( Illuminate\Http\Request $request, UserRepository $users )
$request Illuminate\Http\Request
$users App\Services\Repositories\UserRepository
    public function handleForgot(Request $request, UserRepository $users)
    {
        if (!$this->checkCaptcha($request)) {
            return json(trans('auth.validation.captcha'), 1);
        }
        if (config('mail.host') == "") {
            return json(trans('auth.forgot.close'), 1);
        }
        if (Session::has('last_mail_time') && time() - session('last_mail_time') < 60) {
            return json(trans('auth.forgot.frequent-mail'), 1);
        }
        // get user instance
        $user = $users->get($request->input('email'), 'email');
        if (!$user) {
            return json(trans('auth.forgot.unregistered'), 1);
        }
        $uid = $user->uid;
        // generate token for password resetting
        $token = base64_encode($user->getToken() . substr(time(), 4, 6) . Utils::generateRndString(16));
        $url = Option::get('site_url') . "/auth/reset?uid={$uid}&token={$token}";
        try {
            Mail::send('auth.mail', ['reset_url' => $url], function ($m) use($request) {
                $site_name = Option::get('site_name');
                $m->from(config('mail.username'), $site_name);
                $m->to($request->input('email'))->subject(trans('auth.mail.title', ['sitename' => $site_name]));
            });
            Log::info("[Password Reset] Mail has been sent to [{$request->input('email')}] with token [{$token}]");
        } catch (\Exception $e) {
            return json(trans('auth.mail.failed', ['msg' => $e->getMessage()]), 2);
        }
        Session::put('last_mail_time', time());
        return json(trans('auth.mail.success'), 0);
    }