stylers / laravel-email-verification
模型必须验证其电子邮件
0.2.0
2024-01-05 15:03 UTC
Requires
- illuminate/bus: ^5.0|^6.0|^7.0|^8.0|^9.0|^10.0
- illuminate/database: ^5.0|^6.0|^7.0|^8.0|^9.0|^10.0
- illuminate/notifications: ^5.0|^6.0|^7.0|^8.0|^9.0|^10.0
- illuminate/support: ^5.0|^6.0|^7.0|^8.0|^9.0|^10.0
Requires (Dev)
- laravel/legacy-factories: ~1.3.2
- mockery/mockery: ^1.1|^1.6
- orchestra/testbench: ^3.0|^4.0|^5.0|^6.0|^7.0|^8.0
- phpmd/phpmd: ^2.6
- phpunit/phpunit: ^7.3|^10.0
- themsaid/laravel-mail-preview: ^2.0|^6.0
This package is not auto-updated.
Last update: 2024-09-21 18:19:43 UTC
README
Laravel 邮件验证(未发布)
待办事项
- 发布
- 在 Packagist 上发布
要求
- PHP >= 7.1.3
- Laravel ~5.x
安装
composer require stylers/laravel-email-verification
发布资源
php artisan vendor:publish --tag=laravel-mail php artisan vendor:publish --provider="Themsaid\MailPreview\MailPreviewServiceProvider" php artisan vendor:publish --provider="Stylers\EmailVerification\Frameworks\Laravel\ServiceProvider"
运行迁移
php artisan migrate
使用方法
设置抽象
use Stylers\EmailVerification\NotifiableInterface; use Illuminate\Notifications\Notifiable; use Stylers\EmailVerification\EmailVerifiableInterface; use Stylers\EmailVerification\Frameworks\Laravel\Models\Traits\EmailVerifiable; class User extends Model implements NotifiableInterface, EmailVerifiableInterface { use Notifiable; use EmailVerifiable; ... public function getName(): string { return (string)$this->name; } }
注册监听事件
// app/Providers/EventServiceProvider.php protected $listen = [ ... 'Stylers\EmailVerification\Frameworks\Laravel\Events\VerificationSuccess' => [ 'your\listener\class1', 'your\listener\class2', ] ]; // OR you can register your listener via Event facade in any ServiceProvider::boot method Event::listen( 'Stylers\EmailVerification\Frameworks\Laravel\Events\VerificationSuccess', 'your\listener\class' );
生成邮件验证请求的示例
创建自己的路由来生成验证请求。将以下代码写入 routes/web.php 并实现操作
Route::post('/email-verification-request', 'AnyController@createEmailVerificationRequest') ->name('email-verification-request.create');
use Stylers\EmailVerification\Frameworks\Laravel\Notifications\EmailVerificationRequestCreate; use Stylers\EmailVerification\Exceptions\AlreadyVerifiedException; ... class AnyController extends Controller { ... public function createRequest( Request $request, EmailVerificationRequestInterface $emailVerificationService ) { $verifiableUser = $notifiableUser = User::first(); try { $verificationRequest = $emailVerificationService->createRequest($verifiableUser->email); $emailVerificationService->sendEmail($verificationRequest->getToken(), $notifiableUser); } catch (AlreadyVerifiedException $e) { // handle exception } ... } }
验证示例
创建自己的验证路由。将以下代码写入 routes/web.php 并实现操作
Route::get('/email/verify/{token}', 'AnyController@verifyEmail') ->name(config('email-verification.route'));
在 AnyController 中实现 verifyEmail 方法
... use Stylers\EmailVerification\Exceptions\ExpiredVerificationException; use Stylers\EmailVerification\Exceptions\AlreadyVerifiedException; use Stylers\EmailVerification\EmailVerificationServiceInterface; ... class AnyController extends Controller { ... public function verifyEmail( Request $request, EmailVerificationServiceInterface $emailVerificationService ) { $token = $request->input('token'); try { $emailVerificationRequest = $emailVerificationService->verify($token); } catch(ExpiredVerificationException $e) { // expired verification token } catch(AlreadyVerifiedException $e) { // already verified email } catch(\InvalidArgumentException $e) { // non-existing token } ... // email verification succeed } }