middleware('guest:club'); } /** * Get the guard to be used during authentication. * * @return \Illuminate\Contracts\Auth\StatefulGuard */ protected function guard(): \Illuminate\Contracts\Auth\StatefulGuard { return Auth::guard('club'); } /** * Display the password reset view for the given token. * * If no token is present, display the link request form. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Contracts\View\View */ public function showResetForm(Request $request): \Illuminate\Contracts\View\View { $token = $request->route()->parameter('token'); return view('club.auth.passwords.reset')->with([ 'token' => $token, 'email' => $request->email ]); } /** * Reset the given user's password. * * @param \App\Models\Customer $customer * @param string $password * @return void * @throws \Illuminate\Validation\ValidationException If something goes wrong. */ protected function resetPassword(Customer $customer, string $password): void { /** @var \LDC\LDCCRM\CrmApiV4 */ $crm = app('crmAPI'); try { if (!($crmCustomer = $crm->getCustomer($customer->hashcode))) { throw ValidationException::withMessages([ 'error' => trans('Changement impossible, compte inexistant.') ]); } $crmCustomer->password = $password; $crmCustomer->save(); } catch (\TypeError | CrmException | ApiErrorException $e) { report($e); throw ValidationException::withMessages([ 'error' => trans('Une erreur est survenue, merci de réessayer ultérieurement.') ]); } catch (ExceptionsValidationException $e) { throw ValidationException::withMessages([ 'password' => $e->getMessage() ]); } $customer->setRememberToken(Str::random(60)); $customer->saveOrFail(); event(new PasswordReset($customer)); $this->guard()->login($customer); } /** * Get the post register / login redirect path. * * @return string */ public function redirectPath(): string { return $this->authLoggedRedirectPath(); } /** * Get the broker to be used during password reset. * * @return \Illuminate\Contracts\Auth\PasswordBroker */ public function broker(): \Illuminate\Contracts\Auth\PasswordBroker { return Password::broker('customers'); } }