LoginSignup
0
0

More than 1 year has passed since last update.

Laravel:パスワードリセット実装の仕方

Posted at

プログラミング初心者です。

やりたいこと

LaravelのAuthをインストールすると、Forgot your Password?という名前でパスワードリセット機能が実装されます。
ただそのままだとメール送信することができず、エラー表示がでました。そこから実装に成功したので、ここに記録します。

日本語やデザイン変更してしまってますが、パスワードリセット部分の写真です。
スクリーンショット 2021-11-17 1.08.53.png

1 まずエラー①

何も自分で実装してなかったのでそのままメール送信すると以下のエラーが出ました。

Call to undefined method App\User::notify()

1-1 エラー①解決方法

①Notificationsディレクターに一つもファイル作成してなかったのでCustomResetPasswordという名前で作成しました。

$ php artisan make:notification CustomResetPassword

②User.phpに以下追記

User.php
use App\Notifications\CustomResetPassword;

class User extends Authenticatable
{
    //メール送る上で必須
    use Notifiable;

    /**
     * パスワード再設定メールの送信
     *
     * @param  string  $token
     * @return void
     */
    public function sendPasswordResetNotification($token)
    {
        $this->notify(new CustomResetPassword($token));
    }

2 エラー②

エラー①が解決したと思って再度メール送信したら次のエラーが出ました。

swift_transportexception expected response code 250 but got code "530", with message "530 5.7.1 authentication required 

2-1 エラー②解決方法

envの設定と、今回送信元に gmailを使用した為googleのセキュリティー変更をしました。

①以下.envの設定

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=使用したい@gmail.com
MAIL_PASSWORD=gmailのパスワード
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=使用する@gmail.com
MAIL_FROM_NAME="${APP_NAME}"

②Googleのアカウントで「安全性の低いアプリの許可」を有効にする。
メール送信に使いたいアカウントでgoogleログインし、以下のページで有効化する
https://myaccount.google.com/lesssecureapps

3 一部日本語化

送信されたメールはデフォルトだと英語になっているので、一部日本語にしました。
CustomResetPassword.phpのtoMailメソッド部分を以下のようにしました。

CustomResetPassword.php
public function toMail($notifiable)
{
return (new MailMessage)
        ->from('example@gmail.com', config('app.name'))
        ->subject('パスワード再設定')
        ->line('下のボタンをクリックしてパスワードを再設定してください。')
        ->action('パスワード再設定', url(config('app.url').route('password.reset', $this->token, false)))
        ->line('もし心当たりがない場合は、本メッセージは破棄してください。');
}

補足

まずgmailを使用する前に送信テスト的なことをしてみたいと思ったので、MailHogというメールのテストツールを使用しました。

インストールの仕方
$ brew install mailhog
$ brew services start mailhog
.envはこんな感じで設定
MAIL_DRIVER=smtp
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=sender@example.com
MAIL_FROM_NAME="${APP_NAME}"

http://localhost:8025/
にアクセスしてMailHogの画面が表示されれば成功です。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0