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)。有关更多信息,请参阅许可证文件。