sheavescapital / laravel-notifications-twilio-verify
Twilio Verify integration with Laravel
Package info
github.com/sheavescapital/laravel-notifications-twilio-verify
pkg:composer/sheavescapital/laravel-notifications-twilio-verify
Requires
- php: >=8.2
- guzzlehttp/guzzle: ^7.8
- illuminate/contracts: ^11.0|^12.0
- pragmarx/google2fa: ^8.0|^9.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|^4.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.