メールアドレスでユーザー登録するアプリケーションでは、登録されたメールアドレスにログイン用の確認メールを送信するいわゆる【メール認証(検証)】という仕組みがありますが、最新のLaravelにはその仕組みが用意されています。
通常のlaravel new コマンドで–authオプションを付加してアプリケーションを作成します。
laravel new [AppName] --auth
.envファイルの「MAIL_」セクションに既存のSMTPサーバーを登録します。
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=*****@gmail.com
MAIL_PASSWORD=*************
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=*****@gmail.com
MAIL_FROM_NAME="${APP_NAME}"
App/User.phpファイルにLaravel MustVerifyEmailコントラクトを実装します。
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable implements MustVerifyEmail
{
use Notifiable;
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
protected $casts = [
'email_verified_at' => 'datetime',
];
}
検証ルートの追加
Auth::routes(['verify' => true]);
これは、email/verifyし、email/resendするということです
電子メール検証ミドルウェアの追加
app/Http/Controllers/HomeController.php
class HomeController extends Controller
{
public function __construct()
{
$this->middleware('verified');
}
.......
}