rasulian/laravel-user-verification

用于用户邮箱和电话号码验证的激活码包

v1.0 2017-10-14 19:04 UTC

This package is not auto-updated.

Last update: 2024-09-15 04:36:56 UTC


README

一个简单的包,通过令牌和代码号激活用户。

此包允许您通过发送电子邮件的令牌和短信的代码号来验证用户。

安装

此包可用于Laravel 5.4或更高版本。

您可以通过composer安装此包

composer require rasulian/laravel-user-verification

在Laravel 5.5中,服务提供程序将自动注册。在框架的旧版本中,只需在config/app.php文件中添加服务提供程序即可

'providers' => [
    // ...
    Rasulian\Verification\VerificationServiceProvider::class,
];

您可以在config/app.php中添加以下别名

'aliases' => [
    // ...
    'Verification' => Rasulian\UserVerification\Facades\Verification::class,

通过运行以下命令发布包配置和数据库迁移文件

php artisan vendor:publish --provider="Rasulian\Verification\VerificationServiceProvider::class"

配置

迁移

表示用户模型的表必须使用verified列进行更新。此更新将由此包中包含的迁移执行。

请确保您的用户表中没有此列。

如果您的用户表名不是users,您可以在config/verification.php中更改它。

现在您可以按常规方式进行迁移

php artisan migrate

中间件

此包提供了一个可选的中间件,抛出UserVerifiedMiddleware。请参阅Laravel 文档以了解有关如何与异常处理器一起工作的更多信息。

要注册默认中间件,请在app/Http/Kernel.php文件中的$routeMiddleware数组中添加以下行

protected $routeMiddleware = [
    'user.verified' => \Rasulian\UserVerification\Middlewares\UserVerifiedMiddleware::class,
];

您可以使用此中间件来处理需要用户邮箱或电话号码验证的路由

Route::middleware('auth', 'user.verified')->group(function () {
    // Routes here
});

错误

此包抛出了几个异常。您可以使用try\catch语句或Laravel异常处理器。

  • UserIsVerifiedException 给定的用户已验证
  • UserNotVerifiedException 给定的用户未验证
  • VerifyTokenMismatchException 给定的令牌错误或不可用
  • VerifyCodeMismatchException 给定的代码错误或不可用

使用方法

路由

默认情况下,此包提供了一条用于通过令牌验证用户的路由。

Route::get('user/verification/{token}', 'App\Http\Controllers\Auth\RegisterController@verifyUser')
    ->name('user.verify');

覆盖包路由

要定义自己的自定义路由,请将包服务提供程序的调用放在config/app.php文件中RouteServiceProvider调用之前。

/*
 * Package Service Providers...
 */
Rasulian\UserVerification\VerificationServiceProvider::class,

/*
 * Application Service Providers...
 */
App\Providers\RouteServiceProvider::class,

然后,在您的路由文件中添加自定义路由。

外观

此包提供了一个外观Verification::。

verification 配置文件

发布包配置后,它将位于config目录下。您可以自由更改表示存储令牌和代码的字段的用户表useruser_verifications的表名。

<?php

return [
    'table_names' => [
        'users' => 'users',
        'user_verifications' => 'user_verifications'
    ],

    /**
     * number of hours that needs to pass before
     * we generate a new token\code but only if user request it.
     */
    'generate_after' => 24
];

如何使用此包

此包尽可能简单。它为用户创建一个令牌和代码,并通过令牌或代码验证用户。

以下是生成令牌、将其作为电子邮件发送并验证它的示例。

编辑App\Http\Auth\RegisterController文件

<?php

namespace App\Http\Controllers\Auth;

use App\Mail\Welcome;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Mail;
use Rasulian\UserVerification\Facades\Verification;

class RegisterController extends Controller
{
    //
    // Code
    //

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest', ['except' => 'verifyUser']);
    }

    //
    // Code
    //

    /**
     * The user has been registered.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  mixed  $user
     * @return mixed
     */
    protected function registered(Request $request, $user)
    {
        $token = Verification::getVerificationToken($user);
        $url = route('user.verify', $token);
        Mail::to($user->email)->send(new Welcome($url));

        return redirect('/home')->with('success', 'Registered. Verify your email!');
    }

    public function verifyUser($token)
    {
        $user = Verification::verifyUserByToken($token);

        if (auth()->guest())
            auth()->login($user);

        return redirect('/home')->with('success', 'Your email verified successfully!');
    }
}

在这里,我们使用registered方法创建令牌并发送它,这将覆盖\Illuminate\Foundation\Auth\RegistersUsers@registered方法。我们为给定的用户获取一个令牌,将其作为url,并通过电子邮件发送。

如果用户点击链接,将执行verifyUser方法。这里我们通过提供的令牌验证用户。

请确保在构造函数中将verifyUser添加到guest中间件的except数组中。

重新启动进程

如果您想要重新生成和重新发送验证令牌,可以使用getVerificationToken方法。

生成方法将为指定用户生成新的令牌,并将verified列更改为false

贡献

请随意评论、贡献和帮助。1 PR = 1 功能。

许可证

Laravel 用户验证在MIT 许可证(MIT)下授权。