2016-08-11 5 views
1

Я хотел бы вручную отправить запрос на сброс пароля для определенного пользователя (а не того, который в настоящее время входит в систему) из контроллера. Я кое-что копал в коде Laravel, и мне кажется, что я должен звонить postEmail(Request $request) в ResetsPasswords, но я не могу понять, как получить доступ к правильному экземпляру PasswordController, чтобы позвонить ему.Как отправить запрос на сброс пароля вручную в Laravel 5.2?

+0

Вы пробовали в том числе черты, делая 'использование ResetsPasswords,' внутри контроллера и затем вызвать соответствующий метод от признака? – Jonathon

+0

@ Jonathon Да. Я использовал 'use ResetsPasswords;' и '$ this-> postEmail ($ request);'. Нет выхода; ни ошибки, ни успеха, но я никогда не получаю электронное письмо. –

+0

обновите свой файл конфигурации файла auth.php – ClearBoth

ответ

5

Почему не просто что-то вроде этого для контроллера:

<?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)]); 
     } 
    } 
} 

Вы действительно не объяснить контекст того, как вы хотите отправить это сообщение, поэтому настроить соответствующим образом.

+0

Спасибо - это заставило меня на правильном пути! Я только что отредактировал сообщение, чтобы было ясно, что первым аргументом sendResetLink должен быть массив формы '['email' => $ email_address]' –

+0

Удивительный, рад слышать! –

+0

Ты спас свой день, приятель! – oskarko

0

Полный контроль за 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); 
    }); 
Смежные вопросы