codebar-ag / laravel-twilio-verify
Twilio Verify integration with Laravel
Installs: 1 547
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 5
Forks: 1
Open Issues: 2
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.8
- illuminate/contracts: ^10.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.46
- laravel/pint: ^1.14
- nunomaduro/collision: ^7.10
- orchestra/testbench: ^8.20
- pestphp/pest: ^2.31
- phpunit/phpunit: ^10.5
- spatie/laravel-ray: ^1.35
- vimeo/psalm: ^5.19
This package is auto-updated.
Last update: 2024-11-25 18:35:52 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
- 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.