PHP Classes

File: docs/guides/recovery-codes.rst

Recommend this page to a friend!
  Packages of A. B. M. Mahmudul Hasan   OTP   docs/guides/recovery-codes.rst   Download  
File: docs/guides/recovery-codes.rst
Role: Example script
Content type: text/plain
Description: Example script
Class: OTP
Generate token to be verified during a time window
Author: By
Last change:
Date: 20 days ago
Size: 1,266 bytes
 

Contents

Class file image Download
Recovery Codes
==============

Generating codes
----------------

.. code-block:: php

   <?php
  
use Infocyph\OTP\RecoveryCodes;
   use
Infocyph\OTP\Stores\InMemoryRecoveryCodeStore;

  
$codes = new RecoveryCodes(new InMemoryRecoveryCodeStore());

  
$generated = $codes->generate(
      
binding: 'user-42',
      
count: 10,
      
length: 10,
      
groupSize: 4,
   );

  
$generated->plainCodes;
  
$generated->totalGenerated;
  
$generated->remainingCount;

Consuming a code
----------------

..
code-block:: php

  
<?php
   $result
= $codes->consume('user-42', $generated->plainCodes[0]);

  
$result->consumed;
  
$result->reason;
  
$result->remainingCount;
  
$result->lastUsedAt;

Behavior
--------

-
Codes are displayed in a user-friendly grouped format.
-
Stored values are hashed before persistence.
-
Generating a new set replaces the old set.
-
A consumed code cannot be reused.

Persistent tracking
-------------------

The included in-memory store is useful for tests and simple examples, but production systems should use a persistent store.

See :doc:`custom-stores` for:

-
a database schema example
- a PDO-backed ``RecoveryCodeStoreInterface`` implementation
- guidance on tracking total issued, remaining, and last-used values over time