PHP code example of kwidoo / sms-verification

1. Go to this page and download the library: Download kwidoo/sms-verification library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

kwidoo / sms-verification example snippets


return [
    'verifiers' => [
        'twilio' => \Kwidoo\SmsVerification\Verifiers\TwilioVerifier::class,
        'vonage' => \Kwidoo\SmsVerification\Verifiers\VonageVerifier::class,
    ],
    'default' => 'twilio',
    'round_robin' => [
        'verifiers' => ['twilio', 'vonage'],
        'current_verifier_cache_key' => 'round_robin_verifiers_',
        'verifier_for_number_cache_key' => 'round_robin_verifier_for_',
    ],

    'vonage' => [
        'api_key' => env('VONAGE_API_KEY'),
        'api_secret' => env('VONAGE_API_SECRET'),
        'brand' => env('VONAGE_BRAND', 'MyApp'),
    ],
    'twilio' => [
        'sid' => env('TWILIO_SID'),
        'auth_token' => env('TWILIO_AUTH_TOKEN'),
        'verify_sid' => env('TWILIO_VERIFY_SID'),
    ],
];

   use Kwidoo\SmsVerification\VerifierFactory;

   class SomeController extends Controller
   {
       public function sendCode(Request $request, VerifierFactory $factory)
       {
           $phoneNumber = $request->input('phone_number');
           $verifier = $factory->make(); // uses default (twilio)
           $verifier->create($phoneNumber);

           return response()->json(['status' => 'Verification code sent.']);
       }

       public function checkCode(Request $request, VerifierFactory $factory)
       {
           $phoneNumber = $request->input('phone_number');
           $code = $request->input('code');
           $verifier = $factory->make(); // uses default (twilio)

           if ($verifier->validate([$phoneNumber, $code])) {
               return response()->json(['status' => 'Code is valid!']);
           }

           // If invalid, handle appropriately
           return response()->json(['error' => 'Invalid code'], 422);
       }
   }
   

   use Kwidoo\SmsVerification\VerifierFactory;

   class SomeController extends Controller
   {
       public function sendCode(Request $request, VerifierFactory $factory)
       {
           $phoneNumber = $request->input('phone_number');
           $verifier = $factory->make('roundRobin');
           $verifier->create($phoneNumber);

           return response()->json(['status' => 'Verification code sent.']);
       }

       public function checkCode(Request $request, VerifierFactory $factory)
       {
           $phoneNumber = $request->input('phone_number');
           $code = $request->input('code');
           $verifier = $factory->make('roundRobin');

           if ($verifier->validate([$phoneNumber, $code])) {
               return response()->json(['status' => 'Code is valid!']);
           }

           // If invalid, handle appropriately
           return response()->json(['error' => 'Invalid code'], 422);
       }
   }
   

namespace App\Verifiers;

use Kwidoo\SmsVerification\Verifiers\Verifier;

class MyCustomVerifier extends Verifier
{
    public function create(string $phoneNumber): void
    {
        // Implementation to send code
    }

    public function validate(array $credentials): bool
    {
        // Implementation to check code
        return true;
    }
}

'verifiers' => [
   'twilio' => \Kwidoo\SmsVerification\Verifiers\TwilioVerifier::class,
   'vonage' => \Kwidoo\SmsVerification\Verifiers\VonageVerifier::class,
   'my_custom' => \App\Verifiers\MyCustomVerifier::class,
],

$verifier = $factory->make('my_custom');

// routes/api.php

use Illuminate\Support\Facades\Route;
use Kwidoo\SmsVerification\VerifierFactory;

Route::post('/send-code', function(\Illuminate\Http\Request $request, VerifierFactory $factory) {
    $phoneNumber = $request->input('phone_number');

    // If you want round robin, pass 'roundRobin' or whichever config key you want:
    // $verifier = $factory->make('roundRobin');
    $verifier = $factory->make(); // default is 'twilio'

    $verifier->create($phoneNumber);
    return response()->json(['message' => 'Code sent']);
});

Route::post('/verify-code', function(\Illuminate\Http\Request $request, VerifierFactory $factory) {
    $phoneNumber = $request->input('phone_number');
    $code = $request->input('code');

    $verifier = $factory->make(); // or 'roundRobin'
    $isValid = $verifier->validate([$phoneNumber, $code]);

    return response()->json(['valid' => $isValid]);
});
bash
   php artisan vendor:publish --provider="Kwidoo\SmsVerification\SmsVerificationProvider" --tag="sms-verification-config"
   
bash
php artisan verifier:create-sms-verifier {name?}