Update website
This commit is contained in:
parent
bb4b0f9be8
commit
011b183e28
4263 changed files with 3014 additions and 720369 deletions
|
@ -1,9 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace PragmaRX\Google2FAQRCode\Exceptions;
|
||||
|
||||
use Exception;
|
||||
|
||||
class MissingQrCodeServiceException extends Exception
|
||||
{
|
||||
}
|
|
@ -1,112 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace PragmaRX\Google2FAQRCode;
|
||||
|
||||
use BaconQrCode\Writer;
|
||||
use BaconQrCode\Renderer\Image\Png;
|
||||
use BaconQrCode\Renderer\ImageRenderer;
|
||||
use PragmaRX\Google2FAQRCode\QRCode\Bacon;
|
||||
use PragmaRX\Google2FAQRCode\QRCode\Chillerlan;
|
||||
use BaconQrCode\Renderer\Image\RendererInterface;
|
||||
use BaconQrCode\Writer as BaconQrCodeWriter;
|
||||
use BaconQrCode\Renderer\Image\ImagickImageBackEnd;
|
||||
use PragmaRX\Google2FA\Google2FA as Google2FAPackage;
|
||||
use BaconQrCode\Renderer\RendererStyle\RendererStyle;
|
||||
use BaconQrCode\Renderer\Image\ImageBackEndInterface;
|
||||
use PragmaRX\Google2FAQRCode\Exceptions\MissingQrCodeServiceException;
|
||||
|
||||
class Google2FA extends Google2FAPackage
|
||||
{
|
||||
/**
|
||||
* @var ImageBackEndInterface|RendererInterface|null $imageBackEnd
|
||||
*/
|
||||
protected $qrCodeService;
|
||||
|
||||
/**
|
||||
* Google2FA constructor.
|
||||
*
|
||||
* @param ImageBackEndInterface|RendererInterface|null $imageBackEnd
|
||||
*/
|
||||
public function __construct($qrCodeService = null)
|
||||
{
|
||||
$this->setQrCodeService(
|
||||
empty($qrCodeService)
|
||||
? $this->qrCodeServiceFactory()
|
||||
: $qrCodeService
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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'
|
||||
) {
|
||||
if (empty($this->getQrCodeService())) {
|
||||
throw new MissingQrCodeServiceException(
|
||||
'You need to install a service package or assign yourself the service to be used.'
|
||||
);
|
||||
}
|
||||
|
||||
return $this->qrCodeService->getQRCodeInline(
|
||||
$this->getQRCodeUrl($company, $holder, $secret),
|
||||
$size,
|
||||
$encoding
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Service setter
|
||||
*
|
||||
* @return \PragmaRX\Google2FAQRCode\QRCode\QRCodeServiceContract
|
||||
*/
|
||||
public function getQrCodeService()
|
||||
{
|
||||
return $this->qrCodeService;
|
||||
}
|
||||
|
||||
/**
|
||||
* Service setter
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setQrCodeService($service)
|
||||
{
|
||||
$this->qrCodeService = $service;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the QR Code service instance
|
||||
*
|
||||
* @return \PragmaRX\Google2FAQRCode\QRCode\QRCodeServiceContract
|
||||
*/
|
||||
public function qrCodeServiceFactory()
|
||||
{
|
||||
if (
|
||||
class_exists('BaconQrCode\Writer') &&
|
||||
class_exists('BaconQrCode\Renderer\ImageRenderer')
|
||||
) {
|
||||
return new Bacon();
|
||||
}
|
||||
|
||||
if (class_exists('chillerlan\QRCode\QRCode')) {
|
||||
return new Chillerlan();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -1,97 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace PragmaRX\Google2FAQRCode\QRCode;
|
||||
|
||||
use BaconQrCode\Renderer\ImageRenderer;
|
||||
use BaconQrCode\Writer as BaconQrCodeWriter;
|
||||
use BaconQrCode\Renderer\Image\SvgImageBackEnd;
|
||||
use BaconQrCode\Renderer\Image\ImageBackEndInterface;
|
||||
use BaconQrCode\Renderer\Image\ImagickImageBackEnd;
|
||||
use BaconQrCode\Renderer\RendererStyle\RendererStyle;
|
||||
use BaconQrCode\Writer;
|
||||
|
||||
class Bacon implements QRCodeServiceContract
|
||||
{
|
||||
/**
|
||||
* @var ImageBackEndInterface|RendererInterface|null $imageBackEnd
|
||||
*/
|
||||
protected $imageBackEnd;
|
||||
|
||||
/**
|
||||
* Google2FA constructor.
|
||||
*
|
||||
* @param ImageBackEndInterface|RendererInterface|null $imageBackEnd
|
||||
*/
|
||||
public function __construct($imageBackEnd = null)
|
||||
{
|
||||
$this->imageBackEnd = $imageBackEnd;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a QR code data url to display inline.
|
||||
*
|
||||
* @param string $string
|
||||
* @param int $size
|
||||
* @param string $encoding Default to UTF-8
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getQRCodeInline($string, $size = 200, $encoding = 'utf-8')
|
||||
{
|
||||
$renderer = new ImageRenderer(
|
||||
(new RendererStyle($size))->withSize($size),
|
||||
$this->getImageBackEnd()
|
||||
);
|
||||
|
||||
$bacon = new Writer($renderer);
|
||||
|
||||
$data = $bacon->writeString($string, $encoding);
|
||||
|
||||
if ($this->getImageBackEnd() instanceof ImagickImageBackEnd) {
|
||||
return 'data:image/png;base64,' . base64_encode($data);
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if Imagick is available
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function imagickIsAvailable()
|
||||
{
|
||||
return extension_loaded('imagick');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get image backend
|
||||
*
|
||||
* @return ImageRenderer
|
||||
*/
|
||||
public function getImageBackend()
|
||||
{
|
||||
if (empty($this->imageBackEnd)) {
|
||||
$this->imageBackEnd = !$this->imagickIsAvailable()
|
||||
? new SvgImageBackEnd()
|
||||
: new ImagickImageBackEnd();
|
||||
}
|
||||
|
||||
$this->setImageBackEnd($this->imageBackEnd);
|
||||
|
||||
return $this->imageBackEnd;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set image backend
|
||||
*
|
||||
* @param $imageBackEnd
|
||||
* @return $this
|
||||
*/
|
||||
public function setImageBackend($imageBackEnd)
|
||||
{
|
||||
$this->imageBackEnd = $imageBackEnd;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
|
@ -1,80 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace PragmaRX\Google2FAQRCode\QRCode;
|
||||
|
||||
use Illuminate\Support\Str;
|
||||
use chillerlan\QRCode\QRCode;
|
||||
use chillerlan\QRCode\QROptions;
|
||||
use BaconQrCode\Writer as BaconQrCodeWriter;
|
||||
|
||||
class Chillerlan implements QRCodeServiceContract
|
||||
{
|
||||
protected $options = [];
|
||||
|
||||
/**
|
||||
* Get QRCode options.
|
||||
*
|
||||
* @param int $size
|
||||
* @return \chillerlan\QRCode\QROptions
|
||||
*/
|
||||
protected function getOptions()
|
||||
{
|
||||
$options = new QROptions($this->buildOptionsArray());
|
||||
|
||||
return $options;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set QRCode options.
|
||||
*
|
||||
* @param array $options
|
||||
* @return self
|
||||
*/
|
||||
protected function setOptions($options)
|
||||
{
|
||||
$this->options = $options;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the options array
|
||||
*
|
||||
* @param null $size
|
||||
* @return array
|
||||
*/
|
||||
public function buildOptionsArray($size = null)
|
||||
{
|
||||
$defaults = [
|
||||
'version' => QRCode::VERSION_AUTO,
|
||||
'outputType' => QRCode::OUTPUT_MARKUP_SVG,
|
||||
'eccLevel' => QRCode::ECC_L,
|
||||
];
|
||||
|
||||
return array_merge($defaults, $this->options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a QR code data url to display inline.
|
||||
*
|
||||
* @param string $string
|
||||
* @param int $size
|
||||
* @param string $encoding Default to UTF-8
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getQRCodeInline($string, $size = null, $encoding = null)
|
||||
{
|
||||
$renderer = new QRCode($this->getOptions());
|
||||
|
||||
$header = "data:image/svg+xml;base64,";
|
||||
|
||||
$image = $renderer->render($string);
|
||||
|
||||
if (strncmp($image, $header, strlen($header)) === 0) {
|
||||
return $image;
|
||||
}
|
||||
|
||||
return $header . base64_encode($image);
|
||||
}
|
||||
}
|
|
@ -1,17 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace PragmaRX\Google2FAQRCode\QRCode;
|
||||
|
||||
interface QRCodeServiceContract
|
||||
{
|
||||
/**
|
||||
* Generates a QR code data url to display inline.
|
||||
*
|
||||
* @param string $string
|
||||
* @param int $size
|
||||
* @param string $encoding Default to UTF-8
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getQRCodeInline($string, $size = 200, $encoding = 'utf-8');
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue