jersyfi / laravel-verify-email
用于Laravel的电子邮件验证的包
Requires
- php: ^7.3|^8.0
- laravel/framework: ^8.0
Suggests
- laravel/breeze: Required to use the Laravel Breeze as a starter kit (^1.0).
README
基于Laravel电子邮件验证功能的简单设计的电子邮件验证。Verify Email会将脚手架发布到您的Laravel应用程序中,可以根据您的应用程序需求轻松自定义。最简单的方法是使用laravel breeze,因为它是以相同的方式设计的。
建议使用laravel breeze,但您不必这样做。当您不使用建议的包时,请在开始之前熟悉laravel电子邮件验证。
安装
安装此包也很简单。
composer require jersyfi/laravel-verify-email php artisan verify-email:install
准备您的应用程序
用户模型需要使用特性MustVerifyNewEmail
。还需要覆盖默认函数sendEmailVerificationNotification
。
use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Notifications\Notifiable; use App\Traits\Auth\MustVerifyNewEmail; class User extends Authenticatable implements MustVerifyEmail { use Notifiable, MustVerifyNewEmail; public function sendEmailVerificationNotification() { $this->newEmail($this->getEmailForVerification()); } }
在路由中,您需要添加以下示例。您可以自由地自定义路由名称,但请记住在您的配置或auth特性MustVerifyNewEmail
中更新它。验证后的重定向路由可以在配置或控制器VerifyNewEmailController
中更改。
use App\Http\Controllers\Auth\VerifyNewEmailController; Route::get('/verify-email/{id}/{hash}', [VerifyNewEmailController::class, '__invoke']) ->middleware(['auth', 'signed', 'throttle:6,1']) ->name('verification.verify');
至少需要迁移%_create_pending_user_emails.php
迁移。
php artisan migrate
配置
配置可以在配置文件verify-email
或发布的文件中进行。所有配置值都有它们使用的文件路径。
对于验证URL,需要route.for
或转到app/Traits/Auth/MustVerifyNewEmail
并在函数verificationUrl
中更改它。在调用验证链接时,需要route.after
以重定向或转到app/Http/Controllers/Auth/VerifyNewEmailController
并在函数__invoke
中更改它。
'route' => [ 'for' => 'verification.verify', 'after' => 'home', ],
您可以选择是否在每次电子邮件更改时重置用户的验证状态,或转到app/Traits/Auth/MustVerifyNewEmail
并在函数newEmail
中更改它。
'reset_verification' => true,
您可以使用分钟数更改验证链接的有效时间,或转到app/Traits/Auth/MustVerifyNewEmail
并在函数verificationUrl
中更改它。
'expire' => 60,
用法
当您想更改用户的电子邮件时,可以调用用户函数syncEmail
。
$request->user()->syncEmail($request->input('email'));
如果您需要获取待处理的电子邮件,可以调用用户函数getPendingEmail
。
$request->user()->getPendingEmail();
如果需要清除用户的待处理电子邮件,请调用clearPendingEmail
。
$request->user()->clearPendingEmail();
变更日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
鸣谢
本包受Laravel Verify New Email包的启发,由Protone Media提供。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。