Completed
Push — master ( 635b37...9d1f6a )
by Antonio Carlos
02:14
created

QRCode   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 58
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
c 1
b 0
f 0
lcom 0
cbo 1
dl 0
loc 58
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getQRCodeGoogleUrl() 0 6 1
A getQRCodeInline() 0 13 1
A getQRCodeUrl() 0 4 1
1
<?php
2
3
namespace PragmaRX\Google2FA\Support;
4
5
use BaconQrCode\Writer;
6
use BaconQrCode\Renderer\Image\Png;
7
8
trait QRCode
9
{
10
    /**
11
     * Creates a Google QR code url.
12
     *
13
     * @param string $company
14
     * @param string $holder
15
     * @param string $secret
16
     * @param int    $size
17
     *
18
     * @return string
19
     */
20
    public function getQRCodeGoogleUrl($company, $holder, $secret, $size = 200)
21
    {
22
        $url = $this->getQRCodeUrl($company, $holder, $secret);
23
24
        return Url::generateGoogleQRCodeUrl('https://chart.googleapis.com/', 'chart', 'chs='.$size.'x'.$size.'&chld=M|0&cht=qr&chl=', $url);
25
    }
26
27
    /**
28
     * Generates a QR code data url to display inline.
29
     *
30
     * @param string $company
31
     * @param string $holder
32
     * @param string $secret
33
     * @param int    $size
34
     * @param string $encoding Default to UTF-8
35
     *
36
     * @return string
37
     */
38
    public function getQRCodeInline($company, $holder, $secret, $size = 200, $encoding = 'utf-8')
39
    {
40
        $url = $this->getQRCodeUrl($company, $holder, $secret);
41
42
        $renderer = new Png();
43
        $renderer->setWidth($size);
44
        $renderer->setHeight($size);
45
46
        $writer = new Writer($renderer);
47
        $data = $writer->writeString($url, $encoding);
48
49
        return 'data:image/png;base64,'.base64_encode($data);
50
    }
51
52
    /**
53
     * Creates a QR code url.
54
     *
55
     * @param $company
56
     * @param $holder
57
     * @param $secret
58
     *
59
     * @return string
60
     */
61
    public function getQRCodeUrl($company, $holder, $secret)
62
    {
63
        return 'otpauth://totp/'.rawurlencode($company).':'.rawurlencode($holder).'?secret='.$secret.'&issuer='.rawurlencode($company).'';
64
    }
65
}
66