diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-01-09 10:55:03 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-01-09 13:09:38 +0100 |
| commit | 04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa (patch) | |
| tree | 5c691241355c943a3c68ddb06b8cf8c60aa11319 /srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/src/Google2FA.php | |
| parent | 7e0d85db834d6351ed85d01e5126ac31dc510b86 (diff) | |
| download | ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.gz ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.bz2 ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.zip | |
phpmyadmin working
Diffstat (limited to 'srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/src/Google2FA.php')
| -rw-r--r-- | srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/src/Google2FA.php | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/src/Google2FA.php b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/src/Google2FA.php new file mode 100644 index 0000000..a4d6340 --- /dev/null +++ b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/src/Google2FA.php @@ -0,0 +1,134 @@ +<?php + +namespace PragmaRX\Google2FAQRCode; + +use BaconQrCode\Renderer\Image\Png; +use BaconQrCode\Renderer\Image\RendererInterface; +use BaconQrCode\Writer as BaconQrCodeWriter; +use PragmaRX\Google2FA\Google2FA as Google2FAPackage; + +use BaconQrCode\Renderer\ImageRenderer; +use BaconQrCode\Renderer\Image\ImageBackEndInterface; +use BaconQrCode\Renderer\Image\ImagickImageBackEnd; +use BaconQrCode\Renderer\RendererStyle\RendererStyle; +use BaconQrCode\Writer; + +class Google2FA extends Google2FAPackage +{ + /** + * @var ImageBackEndInterface|RendererInterface|null $imageBackEnd + */ + protected $imageBackEnd; + + /** + * Google2FA constructor. + * + * @param ImageBackEndInterface|RendererInterface|null $imageBackEnd + */ + public function __construct($imageBackEnd = null) + { + if ($this->getBaconQRCodeVersion() === 1) { + if ($imageBackEnd instanceof RendererInterface) { + $this->imageBackEnd = $imageBackEnd; + } else { + $this->imageBackEnd = new Png(); + } + } else { + if ($imageBackEnd instanceof ImageBackEndInterface) { + $this->imageBackEnd = $imageBackEnd; + } else { + $this->imageBackEnd = new ImagickImageBackEnd(); + } + } + } + + /** + * Generates a QR code data url to display inline. + * + * @param string $company + * @param string $holder + * @param string $secret + * @param int $size + * @param string $encoding Default to UTF-8 + * + * @return string + */ + public function getQRCodeInline($company, $holder, $secret, $size = 200, $encoding = 'utf-8') + { + return $this->getBaconQRCodeVersion() === 1 + ? $this->getQRCodeInlineV1($company, $holder, $secret, $size, $encoding) + : $this->getQRCodeInlineV2($company, $holder, $secret, $size, $encoding); + } + + /** + * Generates a QR code data url to display inline for Bacon QRCode v1 + * + * @param string $company + * @param string $holder + * @param string $secret + * @param int $size + * @param string $encoding Default to UTF-8 + * + * @return string + */ + public function getQRCodeInlineV1($company, $holder, $secret, $size = 200, $encoding = 'utf-8') + { + $url = $this->getQRCodeUrl($company, $holder, $secret); + + $renderer = $this->imageBackEnd; + $renderer->setWidth($size); + $renderer->setHeight($size); + + $bacon = new BaconQrCodeWriter($renderer); + $data = $bacon->writeString($url, $encoding); + + if ($this->imageBackEnd instanceof Png) { + return 'data:image/png;base64,'.base64_encode($data); + } + return $data; + } + + /** + * Generates a QR code data url to display inline for Bacon QRCode v2 + * + * @param string $company + * @param string $holder + * @param string $secret + * @param int $size + * @param string $encoding Default to UTF-8 + * + * @return string + */ + public function getQRCodeInlineV2($company, $holder, $secret, $size = 200, $encoding = 'utf-8') + { + $renderer = new ImageRenderer( + (new RendererStyle($size))->withSize($size), + $this->imageBackEnd + ); + + $bacon = new Writer($renderer); + + $data = $bacon->writeString( + $this->getQRCodeUrl($company, $holder, $secret), + $encoding + ); + + if ($this->imageBackEnd instanceof ImagickImageBackEnd) { + return 'data:image/png;base64,'.base64_encode($data); + } + + return $data; + } + + /** + * Get Bacon QRCode current version + * + * @return int + */ + public function getBaconQRCodeVersion() + { + return class_exists('BaconQrCode\Renderer\Image\Png') && class_exists('BaconQrCode\Writer') + ? 1 + : 2; + } +} |
