Update website

This commit is contained in:
Guilhem Lavaux 2024-11-19 09:35:33 +01:00
parent bb4b0f9be8
commit 011b183e28
4263 changed files with 3014 additions and 720369 deletions

View file

@ -1,9 +0,0 @@
<?php
namespace PragmaRX\Google2FAQRCode\Exceptions;
use Exception;
class MissingQrCodeServiceException extends Exception
{
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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);
}
}

View file

@ -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');
}