Completed
Push — master ( 365b59...c70c47 )
by Matze
06:43
created

Controller::getOneTimeSecret()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 13
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 13
ccs 6
cts 6
cp 1
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 7
nc 2
nop 1
crap 2
1
<?php
2
3
namespace BrainExe\Core\Authentication\TOTP;
4
5
use BrainExe\Core\Annotations\Controller as ControllerAnnotation;
6
use BrainExe\Core\Annotations\Guest;
7
use BrainExe\Core\Annotations\Route;
8
use BrainExe\Core\Authentication\UserVO;
9
use Symfony\Component\HttpFoundation\Request;
10
11
/**
12
 * @ControllerAnnotation
13
 */
14
class Controller
15
{
16
17
    /**
18
     * @var OneTimePassword
19
     */
20
    private $oneTimePassword;
21
22
    /**
23
     * @param OneTimePassword $oneTimePassword
24
     */
25 6
    public function __construct(OneTimePassword $oneTimePassword)
26
    {
27 6
        $this->oneTimePassword = $oneTimePassword;
28 6
    }
29
30
    /**
31
     * @param Request $request
32
     * @return Data
33
     * @Route("/one_time_password/", name="user.get_one_time_secret", methods="GET")
34
     */
35 2
    public function getOneTimeSecret(Request $request)
36
    {
37
        /** @var UserVO $user */
38 2
        $userVo = $request->attributes->get('user');
39
40 2
        if ($userVo->one_time_secret) {
41 1
            $secretData = $this->oneTimePassword->getData($userVo->one_time_secret);
42
        } else {
43 1
            $secretData = null;
44
        }
45
46 2
        return $secretData;
47
    }
48
49
    /**
50
     * @param Request $request
51
     * @return Data
52
     * @Route("/one_time_password/request/", name="user.request_one_time_secret", methods="POST")
53
     */
54 2
    public function requestOneTimeSecret(Request $request) : Data
55
    {
56
        /** @var UserVO $user */
57 2
        $userVo = $request->attributes->get('user');
58 2
        $newToken = (bool)$request->request->get('new');
59
60 2
        if (!$userVo->one_time_secret || $newToken) {
61 1
            $secretData = $this->oneTimePassword->generateSecret($userVo);
62
        } else {
63 1
            $secretData = $this->oneTimePassword->getData($userVo->one_time_secret);
64
        }
65
66 2
        return $secretData;
67
    }
68
69
    /**
70
     * @param Request $request
71
     * @return bool
72
     * @Route("/one_time_password/", name="user.delete_one_time_secret", methods="DELETE")
73
     */
74 1
    public function deleteOneTimeSecret(Request $request) : bool
75
    {
76
        /** @var UserVO $user */
77 1
        $userVo = $request->attributes->get('user');
78
79 1
        $this->oneTimePassword->deleteOneTimeSecret($userVo);
80
81 1
        return true;
82
    }
83
84
    /**
85
     * @param Request $request
86
     * @return bool
87
     * @Route("/one_time_password/mail/", name="authenticate.send_otp_mil", methods="POST")
88
     * @Guest
89
     */
90 1
    public function sendCodeViaMail(Request $request) : bool
91
    {
92 1
        $userName = $request->request->get('user_name');
93
94 1
        $this->oneTimePassword->sendCodeViaMail($userName);
95
96 1
        return true;
97
    }
98
}
99