* @copyright 2023 smiley * @license MIT */ use chillerlan\Authenticator\{Authenticator, AuthenticatorOptionsTrait}; use chillerlan\Authenticator\Authenticators\AuthenticatorInterface; use chillerlan\Settings\SettingsContainerAbstract; use chillerlan\QRCode\{QRCode, QROptionsTrait}; use chillerlan\QRCode\Data\QRMatrix; require_once __DIR__.'/../vendor/autoload.php'; // the options array $optionsArray = [ /* * AuthenticatorOptionsTrait * * @see https://github.com/chillerlan/php-authenticator */ 'mode' => AuthenticatorInterface::TOTP, 'digits' => 8, 'algorithm' => AuthenticatorInterface::ALGO_SHA512, /* * QROptionsTrait */ 'version' => 7, 'addQuietzone' => false, 'imageBase64' => false, 'svgAddXmlHeader' => false, 'cssClass' => 'my-qrcode', 'drawLightModules' => false, 'markupDark' => '', 'markupLight' => '', 'drawCircularModules' => true, 'circleRadius' => 0.4, 'connectPaths' => true, 'keepAsSquare' => [ QRMatrix::M_FINDER_DARK, QRMatrix::M_FINDER_DOT, QRMatrix::M_ALIGNMENT_DARK, ], 'svgDefs' => ' ', ]; // create a new options container on the fly that hosts both, authenticator and qrcode $options = new class($optionsArray) extends SettingsContainerAbstract{ use AuthenticatorOptionsTrait, QROptionsTrait; }; // invoke the worker instances $authenticator = new Authenticator($options); $qrcode = new QRCode($options); // create a secret and URI, generate the QR Code $secret = $authenticator->createSecret(24); $uri = $authenticator->getUri('your authenticator', 'this website'); $svg = $qrcode->render($uri); // dump the output header('Content-type: text/html'); ?> QRCode Authenticator Example