Passed
Pull Request — master (#22)
by Simon
01:54
created

BootstrapMFAProvider::verifyToken()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 21
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 11
nc 4
nop 2
dl 0
loc 21
rs 9.9
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A BootstrapMFAProvider::getMember() 0 3 1
1
<?php
2
3
namespace Firesphere\BootstrapMFA\Providers;
4
5
use Firesphere\BootstrapMFA\Models\BackupCode;
6
use SilverStripe\Control\Controller;
7
use SilverStripe\ORM\DataList;
8
use SilverStripe\ORM\ValidationException;
9
use SilverStripe\Security\Member;
10
11
class BootstrapMFAProvider
12
{
13
    protected $member;
14
15
    /**
16
     * @param string $token
17
     * @return null|BackupCode
18
     */
19
    public function fetchToken($token)
20
    {
21
        $member = $this->getMember();
22
23
        /** @var BackupCode $backupCode */
24
        $backupCode = BackupCode::getValidTokensForMember($member)
25
            ->filter(['Code' => $token])
26
            ->first();
27
28
        return $backupCode;
29
    }
30
31
    /**
32
     * @return Member|null
33
     */
34
    public function getMember()
35
    {
36
        return $this->member;
37
    }
38
39
    /**
40
     * @param Member $member
41
     */
42
    public function setMember($member)
43
    {
44
        $this->member = $member;
45
    }
46
47
    /**
48
     * @throws ValidationException
49
     */
50
    public function updateTokens()
51
    {
52
        // Clear any possible tokens in the session, just to be sure
53
        Controller::curr()->getRequest()->getSession()->clear('tokens');
54
55
        if ($member = $this->getMember()) {
56
            /** @var DataList|BackupCode[] $expiredCodes */
57
            $expiredCodes = BackupCode::get()->filter(['MemberID' => $member->ID]);
58
            $expiredCodes->removeAll();
59
60
            BackupCode::generateTokensForMember($member);
61
        }
62
        // Fail silently
63
    }
64
65
}
66