antonioribeiro / google2fa-qrcode

QRCode for Google2FA
MIT License
107 stars 25 forks source link

Google2FA QRCode

Latest Stable Version License Code Quality Build

Downloads Coverage StyleCI PHP

QRCode For Google2FA

This is package is Goole2FA integrated with a QRCode generator, providing an easy way to plot QRCode for your two factor authentication. For documentation related to Google2FA, please check the documentation of the main package.

Requirements

Installing

Use Composer to install it:

composer require pragmarx/google2fa-qrcode

Using It

Instantiate it directly

use PragmaRX\Google2FAQRCode\Google2FA;

$google2fa = new Google2FA();

return $google2fa->generateSecretKey();

Generating QRCodes

The securer way of creating QRCode is to do it yourself or using a library. First you have to install the BaconQrCode package, as stated above, then you just have to generate the inline string using:

$inlineUrl = $google2fa->getQRCodeInline(
    $companyName,
    $companyEmail,
    $secretKey
);

And use it in your blade template this way:

<img src="https://github.com/antonioribeiro/google2fa-qrcode/raw/master/{{ $inlineUrl }}">
$secretKey = $google2fa->generateSecretKey(16, $userId);

Show the QR Code to your user, via Google Apis

It's insecure to use it via Google Apis, so you have to enable it before using it.

$google2fa->setAllowInsecureCallToGoogleApis(true);

$google2fa_url = $google2fa->getQRCodeGoogleUrl(
    'YourCompany',
    $user->email,
    $user->google2fa_secret
);

/// and in your view:

<img src="https://github.com/antonioribeiro/google2fa-qrcode/raw/master/{{ $google2fa_url }}" alt="">

And they should see and scan the QR code to their applications:

QRCode

And to verify, you just have to:

$secret = $request->input('secret');

$valid = $google2fa->verifyKey($user->google2fa_secret, $secret);

Replacing the QRCode rendering service

If you want to use a different service, you just have to

$google2fa->setQrcodeService(new YourService())
          ->getQRCodeInline(
              $companyName,
              $companyEmail,
              $secretKey
          );

Built-in QRCode rendering services

Beginning on version 2.0 the rendering service is optional, so you have to manually install one of those packages in order to generate QRCodes:

Using a diffent image backend

$google2fa->setQrcodeService(
    new \PragmaRX\Google2FAQRCode\QRCode\Bacon(
        new \BaconQrCode\Renderer\Image\SvgImageBackEnd()
    )
);

// or 

$google2fa = new Google2FA(
    new Bacon(
        new \BaconQrCode\Renderer\Image\SvgImageBackEnd()
    )
);

Tests

The package tests were written with PHPUnit.

Authors

License

Google2FAQRCode is licensed under the MIT License - see the LICENSE file for details.

Contributing

Pull requests and issues are more than welcome.