codebar-ag/laravel-twilio-verify

Twilio Verify integration with Laravel

v2.1 2024-03-25 16:54 UTC

This package is auto-updated.

Last update: 2024-04-25 17:09:11 UTC


README

68747470733a2f2f62616e6e6572732e6265796f6e64636f2e64652f4c61726176656c2532305477696c696f2532305665726966792e706e673f7468656d653d6c69676874267061636b6167654d616e616765723d636f6d706f7365722b72657175697265267061636b6167654e616d653d636f64656261722d61672532466c61726176656c2d7477696c696f2d766572696679267061747465726e3d63697263756974426f617264267374796c653d7374796c655f32266465736372697074696f6e3d416e2b6f70696e696f6e617465642b7761792b746f2b696e746567726174652b5477696c696f2b5665726966792b776974682b4c61726176656c266d643d312673686f7757617465726d61726b3d3026666f6e7453697a653d313530707826696d616765733d62616467652d636865636b267769647468733d35303026686569676874733d353030

Latest Version on Packagist Total Downloads run-tests Psalm Check & fix styling

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

🏋️ 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

License

The MIT License (MIT). Please see License File for more information.