web-dev-qa-db-fra.com

Comment changer l'objet de réinitialisation du mot de passe dans Laravel?

Je suis débutant à Laravel. Actuellement, j'apprends ce cadre. Ma version actuelle Laravel version est 5.3.

J'échafaude mon autorisation en utilisant php artisan make:auth Tout fonctionne bien. J'ai également configuré gmail smtp dans mon fichier .env et mail.php dans config directgory. Tous fonctionnent parfaitement. Mais j'ai vu par défaut que le sujet de l'e-mail de mot de passe oublié va Reset Password. Je veux changer cela.

J'ai vu un blog. J'ai trouvé un blog. Je l'ai implémenté dans mon site. Mais même sortie à venir.

J'ai suivi ces liens -

https://laracasts.com/discuss/channels/general-discussion/laravel-5-password-reset-link-subject

https://laracasts.com/discuss/channels/general-discussion/reset-password-email-subject

https://laracasts.com/discuss/channels/laravel/how-to-override-message-in-sendresetlinkemail-in-forgotpasswordcontroller

16
Chinmay235

Vous pouvez modifier le sujet de l'e-mail de réinitialisation de votre mot de passe, mais cela nécessitera un travail supplémentaire. Tout d'abord, vous devez créer votre propre implémentation de la notification ResetPassword .

Créez une nouvelle classe de notification dans le répertoire app\Notifications, Appelons-la ResetPassword.php:

<?php

namespace App\Notifications;

use Illuminate\Notifications\Notification;
use Illuminate\Notifications\Messages\MailMessage;

class ResetPassword extends Notification
{
    public $token;

    public function __construct($token)
    {
        $this->token = $token;
    }

    public function via($notifiable)
    {
        return ['mail'];
    }

    public function toMail($notifiable)
    {
        return (new MailMessage)
            ->subject('Your Reset Password Subject Here')
            ->line('You are receiving this email because we received a password reset request for your account.')
            ->action('Reset Password', url('password/reset', $this->token))
            ->line('If you did not request a password reset, no further action is required.');
    }
}

Vous pouvez également générer le modèle de notification à l'aide de la commande artisan:

php artisan make:notification ResetPassword

Ou vous pouvez simplement copier-coller le code ci-dessus. Comme vous pouvez le remarquer, cette classe de notification est assez similaire à celle par défaut Illuminate\Auth\Notifications\ResetPassword . Vous pouvez en fait simplement l'étendre à partir de la classe ResetPassword par défaut.

La seule différence est ici, vous ajoutez un nouvel appel de méthode pour définir le sujet de l'e-mail:

return (new MailMessage)
        ->subject('Your Reset Password Subject Here')

Vous pouvez en savoir plus sur Notifications par courrier ici .

Deuxièmement, dans votre fichier app\User.php, Vous devez remplacer la méthode sendPasswordResetNotification() par défaut définie par Illuminate\Auth\Passwords\CanResetPassword trait. Vous devez maintenant utiliser votre propre implémentation ResetPassword:

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use App\Notifications\ResetPassword as ResetPasswordNotification;

class User extends Authenticatable
{
    use Notifiable;

    ...

    public function sendPasswordResetNotification($token)
    {
        // Your your own implementation.
        $this->notify(new ResetPasswordNotification($token));
    }
}

Et maintenant, le sujet de votre e-mail de réinitialisation du mot de passe devrait être mis à jour!

Reset password email subject updated

J'espère que cette aide!

58

Vous pouvez facilement modifier la classe de notification utilisée pour envoyer le lien de réinitialisation du mot de passe à l'utilisateur. Pour commencer, remplacez la méthode sendPasswordResetNotification sur votre modèle utilisateur. Dans cette méthode, vous pouvez envoyer la notification en utilisant la classe de notification que vous choisissez. La réinitialisation du mot de passe $token est le premier argument reçu par la méthode, voir Doc for Customization

/**
 * Send the password reset notification.
 *
 * @param  string  $token
 * @return void
 */
public function sendPasswordResetNotification($token)
{
    $this->notify(new ResetPasswordNotification($token));
}

J'espère que cela t'aides!

5
Saumya Rastogi

Dans Laravel 5.7 l'implémentation par défaut est similaire à ceci:

return (new MailMessage)
            ->subject(Lang::getFromJson('Reset Password Notification'))
            ->line(Lang::getFromJson('You are receiving this email because we received a password reset request for your account.'))
            ->action(Lang::getFromJson('Reset Password'), url(config('app.url').route('password.reset', $this->token, false)))
            ->line(Lang::getFromJson('This password reset link will expire in :count minutes.', ['count' => config('auth.passwords.users.expire')]))
            ->line(Lang::getFromJson('If you did not request a password reset, no further action is required.'));

Tout ce que vous avez à faire est de changer votre locale de config/app.php par exemple à ro, puis dans votre resources/lang, créez un fichier ro.json similaire à ceci:

{
  "Reset Password Notification": "Viața Medicală CMS :: Resetare parolă",
  "Hello!": "Salut,",
  "You are receiving this email because we received a password reset request for your account.": "Primești acest email deoarece am primit o solicitare de resetare a parolei pentru contul tău.",
  "Reset Password": "Reseteză parola",
  "This password reset link will expire in :count minutes.": "Acest link va expira în :count de minute.",
  "If you did not request a password reset, no further action is required.": "Dacă nu ai solicitat resetarea parolei, nu este necesară nicio altă acțiune.",
  "Regards": "Toate cele bune",
  "Oh no": "O, nu",
  "Whoops!": "Hopa!",
  "If you’re having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser: [:actionURL](:actionURL)": "Dacă nu reușești să dai click pe butonul de \":actionText\", dă copy-paste la URL-ul de mai jos în browser:\n [:actionURL](:actionURL)"
}

Il traduira à la fois l'objet (première clé) et le corps du courrier.

MISE À JOUR pour Laravel 6. *
Ceci peut également être utilisé pour VerifyEmail.php notification.

2
Valdrinit

Vous pouvez créer une fonction personnalisée qui créera le jeton de réinitialisation du mot de passe comme ceci.

 $user = User::where('email', '[email protected]' )->first();
 $password_broker = app(PasswordBroker::class); //so we can have dependency injection
 $token = $password_broker->createToken($user); //create reset password token
 $password_broker->emailResetLink($user, $token, function (Message $message) {
         $message->subject('Custom Email title');
 });//send email.
1
jycr753