codebar-ag / laravel-twilio-verify
Twilio Verify integration with Laravel
Installs: 1 550
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 5
Forks: 1
Open Issues: 1
Requires
- php: 8.2.*|8.3.*|8.4.*
- guzzlehttp/guzzle: ^7.8
- illuminate/contracts: ^12.0
- spatie/laravel-package-tools: ^1.19
Requires (Dev)
- larastan/larastan: ^v3.1
- laravel/pint: ^1.21
- orchestra/testbench: ^10.0
- pestphp/pest: ^3.7
- phpstan/extension-installer: ^1.4
- phpstan/phpstan-deprecation-rules: ^2.0
- phpstan/phpstan-phpunit: ^2.0
- spatie/laravel-ray: ^1.39
This package is auto-updated.
Last update: 2025-03-05 01:37:48 UTC
README
This package was developed to give you a quick start to communicate with the Twilio Verify service.
⚠️ This package is not designed as a replacement of the official Twilio REST API. See the documentation if you need further functionality. ⚠️
💡 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
Package | PHP | Laravel |
---|---|---|
v12.0.0 | ^8.2 - ^8.4 | 12.x |
v11.0.0 | ^8.2 - ^8.3 | 11.x |
^8.0 | ... |
- PHP:
^8.0
- Laravel:
^8.12
- Twilio Account
⚙️ Installation
You can install the package via composer:
composer require codebar-ag/laravel-twilio-verify
Add the following environment variables to your .env
file:
TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX TWILIO_AUTH_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX TWILIO_SERVICE_SID=VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
🏗 Usage
use CodebarAg\TwilioVerify\Facades\TwilioVerify; /** * Start a new SMS verification to the phone number. */ $verificationStart = TwilioVerify::start(to: '+12085059915'); /** * Check a verification code. */ $verificationCheck = TwilioVerify::check(to: '+12085059915', code: '1337');
🔢 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
CodebarAg\TwilioVerify\DTO\SendCodeAttempt { +time: Illuminate\Support\Carbon // Carbon +channel: "sms" // string +attempt_sid: "VLMn1NOnmIVWMITO4FbVGxNmEMJ72KKaB2" // string }
CodebarAg\TwilioVerify\DTO\Lookup { +carrier: CodebarAg\TwilioVerify\DTO\Carrier { +error_code: null // ?string +name: "Carrier Name" // string +mobile_country_code: "310" // string +mobile_network_code: "150" // string +type: "150" // string } }
CodebarAg\TwilioVerify\DTO\VerificationStart +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: CodebarAg\TwilioVerify\DTO\Lookup {...} // Lookup +send_code_attempts: Illuminate\Support\Collection { // Collection 0 => CodebarAg\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 }
CodebarAg\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="CodebarAg\TwilioVerify\TwilioVerifyServiceProvider" --tag="laravel-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 CodebarAg\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
📝 Changelog
Please see CHANGELOG for more information on what has changed recently.
✏️ Contributing
Please see CONTRIBUTING for details.
🧑💻 Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
🙏 Credits
- 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.