substituir o modelo de 'reset' de senhas por um modelo personalizado laravel 5. 3
Agora quando eu uso o esqueci a senha e ele me envia um token para o meu e-mail id , eu vejo que o modelo contém laravel e algumas outras coisas que eu poderia querer editar ou ommit, para ser mais preciso , eu quero o meu modelo personalizado para ser usado lá.
eu olhei para os controladores e seus arquivos de origem, mas eu não consigo encontrar o modelo ou o código que está exibindo o html no e-mail.
Como faço isso ? Como é que o mudo?3 answers
Execute o seguinte comando no terminal e os dois modelos de E-mail serão copiados para a sua pasta de recursos/fornecedores/notificações. Então você pode modificar os modelos.
php artisan vendor:publish --tag=laravel-notifications
Pode ler mais sobre Notifications
em Laravel Docs .
Apenas um aviso: para além da resposta anterior, existem passos adicionais se quiser modificar o linhas de notificação como You are receiving this...
, etc. Abaixo está um guia passo a passo.
Terá de anular o valor por omissão sendPasswordResetNotification
Método no seu modelo User
.
Illuminate\Auth\Notifications\ResetPassword.php
. Modificá-lo no núcleo significa que suas alterações são perdidas durante uma atualização de Laravel.
Para fazer isto, adicione o seguinte ao seu o teu modelo.
use App\Notifications\PasswordReset; // Or the location that you store your notifications (this is default).
/**
* Send the password reset notification.
*
* @param string $token
* @return void
*/
public function sendPasswordResetNotification($token)
{
$this->notify(new PasswordReset($token));
}
Por último, criar essa notificação:
php artisan make:notification PasswordReset
E exemplo do conteúdo da presente notificação:
/**
* The password reset token.
*
* @var string
*/
public $token;
/**
* Create a new notification instance.
*
* @return void
*/
public function __construct($token)
{
$this->token = $token;
}
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
return ['mail'];
}
/**
* Build the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
return (new MailMessage)
->line('You are receiving this email because we received a password reset request for your account.') // Here are the lines you can safely override
->action('Reset Password', url('password/reset', $this->token))
->line('If you did not request a password reset, no further action is required.');
}
Você também pode conseguir isto, construindo o seu próprio modelo de E-mail e enviando a ligação de Reset por si mesmo, usando o php mail()
ou o Laravel Mail Facade
mas primeiro terá de criar o símbolo de reset
1) use Illuminate\Contracts\Auth\PasswordBroker;
$user = User::where('email', $email)->first();
if ($user) {
//so we can have dependency
$password_broker = app(PasswordBroker::class);
//create reset password token
$token = $password_broker->createToken($user);
DB::table('password_resets')->insert(['email' => $user->email, 'token' => $token, 'created_at' => new Carbon]);
//Send the reset token with your own template
//It can be like $link = url('/').'/password/reset/'.$token;
}