WEBOPIXEL

Laravelでユーザー登録時に確認メールを送る「Laravel Email Confirmation」

Posted: 2017.10.30 / Category: PHP / Tag: 

Webサービスではユーザー登録時にメールアドレスが正しいか確認する方法として、確認メールを送信してURLをクリックして登録という流れがよくあります。
Laravelパッケージの「Laravel Email Confirmation」を使用すると簡単に作成できるのでご紹介いたします。

Sponsored Link

Laravel 5.5
bestmomo/laravel-email-confirmation 1.1
を使用します。

インストール&準備

最初にartisan make:authでLaravel標準のユーザー認証用のファイルを生成。

php artisan make:auth

コンポーザーでLaravel Email Confirmationをインストールします。

composer require bestmomo/laravel-email-confirmation

providersに追記します。

config/app.php

'providers' => [
	// ...
	Bestmomo\LaravelEmailConfirmation\ServiceProvider::class,
],

migrateでデータベースを作成。

php artisan migrate

ファイルの書き換え

make:authで生成されたコントローラー各ファイルを書き換えていきます。
基本的にuseの部分を書き換えるだけです。

app/Http/Controllers/Auth/LoginController.php

//use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Bestmomo\LaravelEmailConfirmation\Traits\AuthenticatesUsers;

app/Http/Controllers/Auth/LoginController.php

//use Illuminate\Foundation\Auth\RegistersUsers;
use Bestmomo\LaravelEmailConfirmation\Traits\RegistersUsers;

app/Http/Controllers/Auth/ResetPasswordController.php

//use Illuminate\Foundation\Auth\ResetsPasswords;
use Bestmomo\LaravelEmailConfirmation\Traits\ResetsPasswords;

続いてViewのメッセージを表示する部分です。
これは下記コマンドで書き出されます。

php artisan confirmation:auth

login.blade.phpregister.blade.phpに追記されます。

ローカライズ

標準では日本語に対応していないので作成しましょう。

php artisan vendor:publish --tag=confirmation:translations
php artisan confirmation:notification

resources/lang/vendor/confirmationディレクトリが作成されるので他の言語ファイルをコピーして、jaディレクトリを作成します。

メールの内容を書き換えたい場合はapp/Notifications/ConfirmEmail.phpを編集します。 メールのテンプレート自体を変更したい場合はtoMailメソッドのMailMessageviewを指定すると独自のViewファイルを読み込めます。

app/Notifications/ConfirmEmail.php

public function toMail($notifiable)
{
	return (new MailMessage)
		->subject('登録ありがとうございます。')
		->view(
			'emails.register', ['confirmation_url' => url("confirmation/$notifiable->id/$notifiable->confirmation_code")]
		);
}

ほぼドキュメントのままですが、以上です。
これで/registerにアクセスして、登録情報を入力すると登録URLが記載されたメールが送られて登録できるようになります。

詳しくは下記リンク先のページを参考にしてください。

bestmomo/laravel-email-confirmation