fix: 🐛 update forgotten password with CRM v4
This commit is contained in:
parent
8ca9d70ea8
commit
749829f613
4 changed files with 58 additions and 31 deletions
|
|
@ -3,8 +3,6 @@
|
|||
namespace App\Http\Controllers\Club\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Contracts\Auth\PasswordBroker;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Password;
|
||||
|
|
@ -37,7 +35,7 @@ class ForgotPasswordController extends Controller
|
|||
*
|
||||
* @return \Illuminate\View\View
|
||||
*/
|
||||
public function showLinkRequestForm(): View
|
||||
public function showLinkRequestForm(): \Illuminate\View\View
|
||||
{
|
||||
return view('club.auth.passwords.email');
|
||||
}
|
||||
|
|
@ -47,7 +45,7 @@ class ForgotPasswordController extends Controller
|
|||
*
|
||||
* @return \Illuminate\Contracts\Auth\PasswordBroker
|
||||
*/
|
||||
public function broker(): PasswordBroker
|
||||
public function broker(): \Illuminate\Contracts\Auth\PasswordBroker
|
||||
{
|
||||
return Password::broker('customers');
|
||||
}
|
||||
|
|
@ -58,7 +56,7 @@ class ForgotPasswordController extends Controller
|
|||
*
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*/
|
||||
protected function sendResetLinkResponse()
|
||||
protected function sendResetLinkResponse(): \Illuminate\Http\RedirectResponse
|
||||
{
|
||||
return back()->with('info', trans($this->message));
|
||||
}
|
||||
|
|
@ -71,8 +69,10 @@ class ForgotPasswordController extends Controller
|
|||
* @param string $response
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*/
|
||||
protected function sendResetLinkFailedResponse(Request $request, string $response)
|
||||
{
|
||||
protected function sendResetLinkFailedResponse(
|
||||
Request $request,
|
||||
string $response
|
||||
): \Illuminate\Http\RedirectResponse {
|
||||
// ! Ne pas notifier que l'utilisateur n'existe pas.
|
||||
if ($response === 'passwords.user') {
|
||||
return back()->with('info', trans($this->message));
|
||||
|
|
|
|||
|
|
@ -3,15 +3,17 @@
|
|||
namespace App\Http\Controllers\Club\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Customer;
|
||||
use Illuminate\Auth\Events\PasswordReset;
|
||||
use Illuminate\Contracts\Auth\PasswordBroker;
|
||||
use Illuminate\Contracts\Auth\StatefulGuard;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Illuminate\Foundation\Auth\ResetsPasswords;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Password;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
use LDC\LDCCRM\Exceptions\ApiErrorException;
|
||||
use LDC\LDCCRM\Exceptions\CrmException;
|
||||
use LDC\LDCCRM\Exceptions\ValidationException as ExceptionsValidationException;
|
||||
|
||||
class ResetPasswordController extends Controller
|
||||
{
|
||||
|
|
@ -32,7 +34,7 @@ class ResetPasswordController extends Controller
|
|||
*
|
||||
* @return \Illuminate\Contracts\Auth\StatefulGuard
|
||||
*/
|
||||
protected function guard(): StatefulGuard
|
||||
protected function guard(): \Illuminate\Contracts\Auth\StatefulGuard
|
||||
{
|
||||
return Auth::guard('club');
|
||||
}
|
||||
|
|
@ -45,32 +47,49 @@ class ResetPasswordController extends Controller
|
|||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Contracts\View\View
|
||||
*/
|
||||
public function showResetForm(Request $request): 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]
|
||||
);
|
||||
return view('club.auth.passwords.reset')->with([
|
||||
'token' => $token,
|
||||
'email' => $request->email
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset the given user's password.
|
||||
*
|
||||
* @param mixed $customer
|
||||
* @param mixed $password
|
||||
* @param \App\Models\Customer $customer
|
||||
* @param string $password
|
||||
* @return void
|
||||
* @throws \Illuminate\Validation\ValidationException If something goes wrong.
|
||||
*/
|
||||
protected function resetPassword(mixed $customer, mixed $password): void
|
||||
protected function resetPassword(Customer $customer, string $password): void
|
||||
{
|
||||
/** @var \App\Models\Customer $customer */
|
||||
/** @var \LDC\LDCCRM\CrmApiV4 */
|
||||
$crm = app('crmAPI');
|
||||
|
||||
$customer->password = $password;
|
||||
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->last_connection = \now();
|
||||
|
||||
$customer->saveOrFail();
|
||||
|
||||
event(new PasswordReset($customer));
|
||||
|
|
@ -93,7 +112,7 @@ class ResetPasswordController extends Controller
|
|||
*
|
||||
* @return \Illuminate\Contracts\Auth\PasswordBroker
|
||||
*/
|
||||
public function broker(): PasswordBroker
|
||||
public function broker(): \Illuminate\Contracts\Auth\PasswordBroker
|
||||
{
|
||||
return Password::broker('customers');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ use App\Enums\Departaimants\DepartaimantCollectionType;
|
|||
use App\Models\Notification;
|
||||
use App\Notifications\Customer\DestroyCustomer;
|
||||
use App\Notifications\Customer\DestroyedCustomer;
|
||||
use App\Notifications\Customer\ResetPassword;
|
||||
use App\Notifications\Customer\VerifyEmail;
|
||||
use App\Traits\Models\ActivityLog;
|
||||
use Illuminate\Contracts\Auth\MustVerifyEmail;
|
||||
|
|
@ -226,6 +227,19 @@ class Customer extends Authenticatable implements MustVerifyEmail
|
|||
$this->notify(new VerifyEmail());
|
||||
}
|
||||
|
||||
/**
|
||||
* Send the password reset notification.
|
||||
*
|
||||
* @param mixed $token
|
||||
* @return void
|
||||
*/
|
||||
public function sendPasswordResetNotification(mixed $token)
|
||||
{
|
||||
$this->deleteIfDoesNotExistsInCrm();
|
||||
/** @var string $token */
|
||||
$this->notify(new ResetPassword($token));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all user Departaimant collection or create them if they dont exists.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -38,22 +38,16 @@ class ResetPassword extends NotificationsResetPassword
|
|||
*/
|
||||
public function toMail(mixed $notifiable): \Illuminate\Notifications\Messages\MailMessage
|
||||
{
|
||||
// phpcs:enable
|
||||
/** @var \App\Models\Customer $notifiable */
|
||||
$resetUrl = $this->resetUrl($notifiable);
|
||||
/** @var string $firstname */
|
||||
$firstname = $notifiable->username;
|
||||
|
||||
return (new MailMessage())
|
||||
->template('notifications::email-club')
|
||||
->subject(trans('Mot de passe oublié - :site_name', ['site_name' => config('app.name')]))
|
||||
/** @var string $firstname */
|
||||
->greeting(trans('Bonjour :name', ['name' => $firstname]))
|
||||
->greeting(trans('Bonjour :name', ['name' => $notifiable->api_data->firstname]))
|
||||
->line(trans(
|
||||
"Afin réinitialiser votre mot de passe pour vous connecter à :site_name, cliquez sur le lien suivant :",
|
||||
['site_name' => config('app.name')]
|
||||
))
|
||||
/** @var string $verificationUrl */
|
||||
->action(trans('Réinitialisez votre mot de passe'), $resetUrl);
|
||||
->action(trans('Réinitialisez votre mot de passe'), $this->resetUrl($notifiable));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue