mirror of
https://github.com/elyby/accounts.git
synced 2024-11-30 02:32:26 +05:30
Исправлен рендеринг QR кода для пользователей с короткими username или email
This commit is contained in:
parent
9a852e8052
commit
5480e3c8ef
@ -131,6 +131,8 @@ class TwoFactorAuthForm extends ApiForm {
|
||||
}
|
||||
|
||||
public function drawQrCode(string $content): string {
|
||||
$content = $this->forceMinimalQrContentLength($content);
|
||||
|
||||
$renderer = new Svg();
|
||||
$renderer->setMargin(0);
|
||||
$renderer->setForegroundColor(new Rgb(32, 126, 92));
|
||||
@ -158,4 +160,20 @@ class TwoFactorAuthForm extends ApiForm {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* В используемой либе для рендеринга QR кода нет возможности указать QR code version.
|
||||
* http://www.qrcode.com/en/about/version.html
|
||||
* По какой-то причине 7 и 8 версии не читаются вовсе, с логотипом или без.
|
||||
* Поэтому нужно иначально привести строку к длинне 9 версии (91), добавляя к концу
|
||||
* строки необходимое количество символов "#". Этот символ используется, т.к. нашим
|
||||
* контентом является ссылка и чтобы не вводить лишние параметры мы помечаем добавочную
|
||||
* часть как хеш часть и все программы для чтения QR кодов продолжают свою работу.
|
||||
*
|
||||
* @param string $content
|
||||
* @return string
|
||||
*/
|
||||
private function forceMinimalQrContentLength(string $content): string {
|
||||
return str_pad($content, 91, '#');
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user