mirror of
				https://github.com/elyby/accounts.git
				synced 2025-05-31 14:11:46 +05:30 
			
		
		
		
	Исправлен рендеринг QR кода для пользователей с короткими username или email
This commit is contained in:
		@@ -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, '#');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user