kilroyweb / email-verification
支持验证用户邮箱
1.0.1
2017-06-28 17:22 UTC
This package is not auto-updated.
Last update: 2024-09-21 00:24:27 UTC
README
composer require kilroyweb/email-verification
在 app/Http/Kernel.php 的 $routeMiddleware 数组中添加
'verified_email' => \KilroyWeb\EmailVerification\Middleware\RequireVerifiedEmail::class, 'non_verified_email' => \KilroyWeb\EmailVerification\Middleware\RequireNonVerifiedEmail::class,
将 HasEmailVerification 特性添加到您的 User 类中
use \KilroyWeb\EmailVerification\Traits\HasEmailVerification;
路由
使用提供的 "verified_email" 或 "non_verified_email" 中间件
Route::namespace('Email')->prefix('/email')->group(function(){ Route::namespace('Verification')->prefix('/verification')->group(function(){ Route::get('/create', 'VerificationController@create')->middleware(['auth','non_verified_email']); Route::get('/{token}', 'VerificationController@show'); }); });
控制器
使用从 HasEmailVerification 特性继承的可用方法轻松创建控制器
<?php namespace App\Http\Controllers\Email\Verification; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class VerificationController extends Controller { public function create(){ $user = \Auth::user(); $user->requestEmailVerification(); return redirect('/account')->withSuccess('Verification email sent!'); } public function show($token){ $user = \App\User::findByEmailVerificationToken($token); if(!$user){ abort(404); } $user->verifyEmail(); \Auth::login($user); return redirect('/account')->withSuccess('Your email address has been verified!'); } }
创建一个在 "requestEmailVerification()" 时触发的邮件可发送类(app/Mail/EmailVerification.php)
<?php namespace App\Mail; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; class EmailVerification extends Mailable { use Queueable, SerializesModels; public $verifiableModel; public function __construct($verifiableModel) { $this->verifiableModel = $verifiableModel; } /** * *Build the message. * * @return $this */ public function build() { $verifiableModel = $this->verifiableModel; $this->to($verifiableModel->email); return $this->view('email.email-verification.create',[ 'verifiableModel'=>$verifiableModel, ]); } }
和视图(email.email-verification.create)
@extends('layouts.email.app') @section('content') <h2>Click here to verify your email address:</h2> <p><a href="{{ url('/email/verification/'.$verifiableModel->getEmailVerificationToken()) }}">Verify My Email</a></p> @endsection
在您的注册控制器中,调用 requestEmailVerification() 方法在注册时发送验证
protected function create(array $data) { $user = User::create([ ... ]); $user->requestEmailVerification(); return $user; }