ivansotelo / twilio-verify

使用Twilio Verify在Laravel PHP应用程序中验证电话号码

v1.4.2 2024-08-07 20:51 UTC

This package is auto-updated.

Last update: 2024-09-07 21:13:08 UTC


README

Build Status Total Downloads Latest Stable Version License

介绍

TwilioVerify使验证用户电话号码比自定义验证系统更容易、更安全。它在注册过程中通过短信发送短代码到该号码,以确保电话号码有效。这有助于减少伪造账户的数量和向用户发送短信通知时的失败率。

此软件包使用Twilio通知通道

内容

安装

您可以通过Composer安装此软件包

composer require ivansotelo/twilio-verify

在app/config/app.php中添加以下内容

IvanSotelo\TwilioVerify\TwilioVerifyServiceProvider::class,

配置

将您的Twilio Account SID、授权令牌和From号码(可选)添加到您的.env

TWILIO_USERNAME=XYZ # optional when using auth token
TWILIO_PASSWORD=ZYX # optional when using auth token
TWILIO_AUTH_TOKEN=ABCD # optional when using username and password
TWILIO_ACCOUNT_SID=1234 # always required
TWILIO_FROM=100000000 # otional default from
TWILIO_ALPHA_SENDER=HELLO # optional
TWILIO_DEBUG_TO=23423423423 # Set a number that call calls/messages should be routed to for debugging

高级配置

运行php artisan vendor:publish --provider="IvanSotelo\TwilioVerify\TwilioVerifyServiceProvider" --tag=config

/config/twilio-verify.php

要运行此软件包中的迁移,请使用以下命令

php artisan migrate --path="/vendor/ivansotelo/twilio-verify/database/migrations"

默认情况下,此软件包使用App\User:class来获取表名。

要自定义迁移,请使用以下命令发布它

php artisan vendor:publish --provider="IvanSotelo\TwilioVerify\TwilioVerifyServiceProvider" --tag="migrations"

Twilio Verify假设您的MustVerifyPhone特性将随Laravel一起提供的App\User类。如果您想更改此设置,可以在.env文件中指定不同的模型

TWILIO_VERIFY_MODEL=App\User

用法

将MustVerifyPhone特性添加到模型定义中。此特性提供了各种方法,允许您发送验证电话码。

use IvanSotelo\TwilioVerify\Traits\MustVerifyPhone;
use IvanSotelo\TwilioVerify\Contracts\MustVerifyPhoneContract;

class User extends Authenticatable implements MustVerifyPhoneContract
{
    use MustVerifyPhone, Notifiable;

    /**
     * Route notifications for the Twilio channel.
     *
     * @param  \Illuminate\Notifications\Notification  $notification
     * @return string
     */
    public function routeNotificationForTwilio()
    {
        return $this->phone_number;
    }

}

在EventServiceProvider中,将SendPhoneVerificationNotification附加到Illuminate\Auth\Events\Registered事件

namespace App\Providers;

use Illuminate\Support\Facades\Event;
use Illuminate\Auth\Events\Verified;
use Illuminate\Auth\Events\Registered;
use IvanSotelo\TwilioVerify\Listeners\SendPhoneVerificationNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;

class EventServiceProvider extends ServiceProvider
{
    /**
     * The event listener mappings for the application.
     *
     * @var array
     */
    protected $listen = [
        Registered::class => [
            SendPhoneVerificationNotification::class,
        ],
        Verified::class => [
            // You can attach some listener
        ],
    ];
}

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

protected $routeMiddleware = [
    // …
    'isVerified' => \IvanSotelo\TwilioVerify\Http\Middleware\EnsurePhoneIsVerified::class,

在您的路由上应用中间件

Route::group(['middleware' => ['isVerified']], function () {
    // …

默认情况下,此软件包包含两个路由。

Route::get('phone/verify/{code}', 'VerificationController@verify')->name('verification.verify');
Route::post('phone/resend', 'VerificationController@resend')->name('verification.resend');

要自定义翻译,请使用以下命令将文件发布到您的resources/lang/vendor文件夹

php artisan vendor:publish --provider="IvanSotelo\TwilioVerify\TwilioVerifyServiceProvider" --tag="translations"

许可证

TwilioVerify是开源软件,受MIT许可证许可。