use internal QR code generator instead of googleapi service

This commit is contained in:
Daniel Seifert 2018-10-21 22:17:06 +02:00
parent 12294725bc
commit 2dde73ee61
3 changed files with 23 additions and 3 deletions

View File

@ -34,7 +34,8 @@
"require": { "require": {
"php": ">=5.6", "php": ">=5.6",
"oxid-esales/oxideshop-metapackage-ce": "~6.0.3 || ~6.1.0", "oxid-esales/oxideshop-metapackage-ce": "~6.0.3 || ~6.1.0",
"spomky-labs/otphp": "^8.3 || ^9.0" "spomky-labs/otphp": "^8.3 || ^9.0",
"bacon/bacon-qr-code": "^1.0 || ^2.0"
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {

View File

@ -15,6 +15,10 @@
namespace D3\Totp\Application\Model; namespace D3\Totp\Application\Model;
use BaconQrCode\Renderer\Image\SvgImageBackEnd;
use BaconQrCode\Renderer\ImageRenderer;
use BaconQrCode\Renderer\RendererStyle\RendererStyle;
use BaconQrCode\Writer;
use D3\ModCfg\Application\Model\d3database; use D3\ModCfg\Application\Model\d3database;
use D3\Totp\Application\Model\Exceptions\d3totp_wrongOtpException; use D3\Totp\Application\Model\Exceptions\d3totp_wrongOtpException;
use Doctrine\DBAL\DBALException; use Doctrine\DBAL\DBALException;
@ -138,7 +142,7 @@ class d3totp extends BaseModel
$this->totp = TOTP::create($seed ? $seed : $this->getSavedSecret()); $this->totp = TOTP::create($seed ? $seed : $this->getSavedSecret());
$this->totp->setLabel($this->getUser()->getFieldData('oxusername') $this->totp->setLabel($this->getUser()->getFieldData('oxusername')
? $this->getUser()->getFieldData('oxusername') ? $this->getUser()->getFieldData('oxusername')
: null : ''
); );
} }
$this->totp->setIssuer(Registry::getConfig()->getActiveShop()->getFieldData('oxname')); $this->totp->setIssuer(Registry::getConfig()->getActiveShop()->getFieldData('oxname'));
@ -165,6 +169,21 @@ class d3totp extends BaseModel
return $this->getTotp()->getQrCodeUri(); return $this->getTotp()->getQrCodeUri();
} }
/**
* @return string
*/
public function getQrCodeElement()
{
/** @var ImageRenderer $renderer */
$renderer = oxNew(ImageRenderer::class,
oxNew(RendererStyle::class, 200),
oxNew(SvgImageBackEnd::class)
);
/** @var Writer $writer */
$writer = oxNew(Writer::class, $renderer);
return $writer->writeString($this->getTotp()->getProvisioningUri());
}
/** /**
* @return string * @return string
*/ */

View File

@ -48,7 +48,7 @@
[{oxmultilang ident="D3_TOTP_QRCODE"}]  [{oxmultilang ident="D3_TOTP_QRCODE"}] 
</td> </td>
<td class="edittext"> <td class="edittext">
<img src="[{$totp->getQrCodeUri()}]"> [{$totp->getQrCodeElement()}]
[{oxinputhelp ident="D3_TOTP_QRCODE_HELP"}] [{oxinputhelp ident="D3_TOTP_QRCODE_HELP"}]
</td> </td>
</tr> </tr>