jersyfi/laravel-verify-email

用于Laravel的电子邮件验证的包

v1.0.0 2021-03-12 11:19 UTC

This package is auto-updated.

Last update: 2024-09-12 19:24:45 UTC


README

Packagist Downloads Packagist Version GitHub License

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