PHP code example of padosoft / laravel-rebel-bridge-otpz
1. Go to this page and download the library: Download padosoft/laravel-rebel-bridge-otpz 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/ */
padosoft / laravel-rebel-bridge-otpz example snippets
// app/Models/User.php
use BenBjurstrom\Otpz\Models\Concerns\HasOtps;
use BenBjurstrom\Otpz\Models\Concerns\Otpable;
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable implements Otpable
{
use HasOtps, Notifiable;
// ...
}
use Padosoft\Rebel\StepUp\RebelStepUp;
use Padosoft\Rebel\StepUp\StepUpContext;
use Padosoft\Rebel\Core\Context\SecurityContext;
public function deleteAccount(Request $request, RebelStepUp $stepUp): JsonResponse
{
$context = new StepUpContext(
subject: $request->user(),
purpose: 'account-deletion',
security: SecurityContext::fromRequest(
$request,
app(\Padosoft\Rebel\Core\Contracts\KeyedHasher::class)
),
);
// start() emails the OTP; returns the opaque reference to store in session
$reference = $stepUp->driver('otpz')->start($context);
session(['stepup_ref' => $reference]);
return response()->json(['status' => 'otp_sent']);
}
public function confirmDelete(Request $request, RebelStepUp $stepUp): JsonResponse
{
$context = new StepUpContext(
subject: $request->user(),
purpose: 'account-deletion',
security: SecurityContext::fromRequest(
$request,
app(\Padosoft\Rebel\Core\Contracts\KeyedHasher::class)
),
);
$ok = $stepUp->driver('otpz')->verify(
context: $context,
input: $request->input('code'),
reference: session('stepup_ref'),
);
if (! $ok) {
return response()->json(['error' => 'Invalid or expired code'], 422);
}
// proceed with deletion…
$request->user()->delete();
return response()->json(['status' => 'deleted']);
}
$driver = app(\Padosoft\Rebel\StepUp\DriverRegistry::class)->get('otpz');
if ($driver && $driver->isAvailableFor($context)) {
$ref = $driver->start($context);
// store $ref and redirect to code-entry screen
}
use Padosoft\Rebel\Bridge\Otpz\Contracts\OtpzBroker;
use Padosoft\Rebel\Bridge\Otpz\Testing\FakeOtpzBroker;
beforeEach(function (): void {
$fake = new FakeOtpzBroker(capable: true);
app()->instance(OtpzBroker::class, $fake);
$this->fake = $fake;
});
it('accepts the correct code', function (): void {
$driver = app(\Padosoft\Rebel\Bridge\Otpz\Drivers\OtpzStepUpDriver::class);
$user = User::factory()->create();
$ctx = new StepUpContext($user, 'checkout', new SecurityContext('r'));
$ref = $driver->start($ctx);
expect($driver->verify($ctx, $this->fake->defaultCode, $ref))->toBeTrue();
});