Je voudrais envoyer manuellement une demande de réinitialisation de mot de passe à un utilisateur spécifique (pas celui actuellement connecté) à partir d'un contrôleur. J'ai fait quelques recherches dans le code Laravel et il semble que je devrais appeler postEmail(Request $request)
dans ResetsPasswords
, mais je n'arrive pas à comprendre comment accéder à la bonne instance PasswordController
pour l'appeler.
Pourquoi pas quelque chose comme ça pour votre contrôleur:
<?php
namespace Illuminate\Foundation\Auth;
use Illuminate\Http\Request;
use Illuminate\Mail\Message;
use Illuminate\Support\Facades\Password;
class YourController extends Controller
{
public function sendEmail()
{
$credentials = ['email' => $email_address];
$response = Password::sendResetLink($credentials, function (Message $message) {
$message->subject($this->getEmailSubject());
});
switch ($response) {
case Password::RESET_LINK_SENT:
return redirect()->back()->with('status', trans($response));
case Password::INVALID_USER:
return redirect()->back()->withErrors(['email' => trans($response)]);
}
}
}
Vous n'expliquez pas vraiment le contexte de la façon dont vous voulez envoyer cela, alors ajustez en conséquence.
Contrôle complet pour Laravel 5.5:
$user = User::where('email', request()->input('email'))->first();
$token = Password::getRepository()->create($user);
Mail::send(['text' => 'emails.password'], ['token' => $token], function (Message $message) use ($user) {
$message->subject(config('app.name') . ' Password Reset Link');
$message->to($user->email);
});
Grâce à Mariusz Kurman, j'ai seulement ajouté un jeton à sa réponse. cela fonctionne très bien:
$user = User::where('email', request()->input('email'))->first();
$token = Password::getRepository()->create($user);
$user->sendPasswordResetNotification($token);
La façon la plus simple:
$user = User::where('email', request()->input('email'))->first();
$user->sendPasswordResetNotification($token);
Et si vous souhaitez modifier votre e-mail manuellement:
php artisan vendor:publish
sélectionner "11" vous donne:
/resources/views/vendor/notifications/email.blade.php