sheavescapital / laravel-notifications-twilio-verify
Twilio Verify integration with Laravel
v3.1
2025-02-28 04:22 UTC
Requires
- php: >=8.2
- guzzlehttp/guzzle: ^7.8
- illuminate/contracts: ^11.0|^12.0
- pragmarx/google2fa: ^8.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.46
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1
- orchestra/testbench: ^9.0|^10.0
- pestphp/pest: ^2.31|^3.0
- phpstan/phpstan: ^2.0
- vimeo/psalm: ^6.0
README
This package is a opinionated fork of codebar-ag/laravel-twilio-verify, mixed with some code from laravel-notification-channels/twilio.
π‘ What is Twilio Verify?
An elegant third-party integration to validate users with SMS, Voice, Email and Push. Add verification to any step of your userβs journey with a single API.
π Requirements
- PHP:
^8.2
- Laravel:
^11
- Twilio Account
βοΈ Installation
You can install the package via composer:
composer require sheavescapital/laravel-notifications-twilio-verify
Add the following environment variables to your .env
file:
TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX TWILIO_AUTH_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX TWILIO_SERVICE_SID=VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
π Usage
namespace App\Notifications; use Illuminate\Notifications\Notification; use SheavesCapital\TwilioVerify\TwilioVerifyChannel; class SendOTP extends Notification { public function via(object $notifiable): string { return TwilioVerifyChannel::class; } }
π’ Verification Code Limits
- The generated code is valid for (10 minutes)[ https://www.twilio.com/docs/verify/api/rate-limits-and-timeouts].
- You have attempted to send the verification code more than 5 times and have (reached the limit)[https://www.twilio.com/docs/api/errors/60203].
ποΈ DTO showcase
SheavesCapital\TwilioVerify\DTO\SendCodeAttempt { +time: Illuminate\Support\Carbon // Carbon +channel: "sms" // string +attempt_sid: "VLMn1NOnmIVWMITO4FbVGxNmEMJ72KKaB2" // string }
SheavesCapital\TwilioVerify\DTO\Lookup { +carrier: SheavesCapital\TwilioVerify\DTO\Carrier { +error_code: null // ?string +name: "Carrier Name" // string +mobile_country_code: "310" // string +mobile_network_code: "150" // string +type: "150" // string } }
SheavesCapital\TwilioVerify\DTO\Verification +sid: "VEkEJNNkLugY4hietPDbcqUUZz3G5NoTTZ" // string +service_sid: "VAssMsB84NdN0aJJceYsExX1223qAmrubx" // string +account_sid: "ACizUsoInA3dbKR5LA9tOqqA0O3NFSHSNc" // string +to: "+41795555825" // string +channel: "sms" // string +status: "pending" // string +valid: false // bool +created_at: Illuminate\Support\Carbon // Carbon +updated_at: Illuminate\Support\Carbon // Carbon +lookup: SheavesCapital\TwilioVerify\DTO\Lookup {...} // Lookup +send_code_attempts: Illuminate\Support\Collection { // Collection 0 => SheavesCapital\TwilioVerify\DTO\SendCodeAttempt { +time: Illuminate\Support\Carbon // Carbon +channel: "sms" // string +attempt_sid: "VLTvj9jhh76cI78Hc1x0c3UORWJwwqVeTN" // string } ] } +url: "https://verify.twilio.com/v2/Services/VAssMsB84NdN0aJJceYsExX1223qAmrubx/Verifications" // string }
SheavesCapital\TwilioVerify\DTO\VerificationCheck { +sid: "VEvRzh4hPUqmAjeC6li092VNT0yfd23lag" // string +service_sid: "VAxSR0Wq91djjG9PAYtrtjt11f0I4lqdwa" // string +account_sid: "ACcI5zbEYvLr0vPIUTQzWkTpP5DPqTCYDK" // string +to: "+41795555825" // string +channel: "sms" // string +status: "approved" // string +valid: true // bool +created_at: Illuminate\Support\Carbon // Carbon +updated_at: Illuminate\Support\Carbon // Carbon }
π§ Configuration file
You can publish the config file with:
php artisan vendor:publish --provider="SheavesCapital\TwilioVerify\TwilioVerifyServiceProvider" --tag="laravel-notifications-twilio-verify-config"
This is the contents of the published config file:
return [ /* |-------------------------------------------------------------------------- | Twilio Verify Configuration |-------------------------------------------------------------------------- | | You can find your Account SID and Auth Token in the Console Dashboard. | Additionally you should create a new Verify service and paste it in | here. Afterwards you are ready to communicate with Twilio Verify. | */ 'url' => env('TWILIO_URL', 'https://verify.twilio.com/v2/Services'), 'account_sid' => env('TWILIO_ACCOUNT_SID', 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'), 'auth_token' => env('TWILIO_AUTH_TOKEN', 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'), 'service_sid' => env('TWILIO_SERVICE_SID', 'VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'), ];
β¨ Events
Following events are fired:
use SheavesCapital\TwilioVerify\Events\TwilioVerifyResponseLog; // Log each response from the Twilio REST API. TwilioVerifyResponseLog::class => [ // ],
π§ Testing
Copy your own phpunit.xml-file.
cp phpunit.xml.dist phpunit.xml
Modify environment variables in the phpunit.xml-file:
<env name="TWILIO_ACCOUNT_SID" value="ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"/> <env name="TWILIO_AUTH_TOKEN" value="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"/> <env name="TWILIO_SERVICE_SID" value="VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"/>
Run the tests:
composer test
π Credits
- codebar Solutions AG
- Ruslan Steiger
- All Contributors
- Skeleton Repository from Spatie
- Laravel Package Training from Spatie
License
The MIT License (MIT). Please see License File for more information.