pragmarx / google2fa-qrcode
QR Code package for Google2FA
Installs: 12 067 045
Dependents: 34
Suggesters: 2
Security: 0
Stars: 107
Watchers: 3
Forks: 25
Open Issues: 11
Requires
- php: >=7.1
- pragmarx/google2fa: >=4.0
Requires (Dev)
- bacon/bacon-qr-code: ^2.0
- chillerlan/php-qrcode: ^1.0|^2.0|^3.0|^4.0
- khanamiryan/qrcode-detector-decoder: ^1.0
- phpunit/phpunit: ~4|~5|~6|~7|~8|~9
Suggests
- bacon/bacon-qr-code: For QR Code generation, requires imagick
- chillerlan/php-qrcode: For QR Code generation
README
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
- PHP 5.4+
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="{{ $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="{{ $google2fa_url }}" alt="">
And they should see and scan the QR code to their applications:
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:
- BaconQrCode: renders PNG by default, but requires the Imagick PHP extension. You can configure it to use different backends, but you'll have to instantiate it yourself.
- chillerlan/php-qrcode: renders SVG by default and don't require the Imagick PHP extension, but can also generate other formats, which may require Imagick.
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.