web-dev-qa-db-fra.com

Comment envoyer manuellement une demande de réinitialisation de mot de passe dans Laravel 5.2?

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.

12
Daniel Centore

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.

19
Jared Eitnier

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);
    });
12
kjdion84

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);
6
Shayan de

La façon la plus simple:

$user = User::where('email', request()->input('email'))->first();
$user->sendPasswordResetNotification($token);

@ bas de Doc

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
0
Mariusz Kurman