Completed
Push — master ( 0e58f5...d2de37 )
by
unknown
13s
created

BootstrapMFAProvider   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 50
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 14
dl 0
loc 50
rs 10
c 0
b 0
f 0
wmc 5

4 Methods

Rating   Name   Duplication   Size   Complexity  
A fetchToken() 0 10 1
A updateTokens() 0 11 2
A getMember() 0 3 1
A setMember() 0 3 1
1
<?php
2
3
namespace Firesphere\BootstrapMFA\Providers;
4
5
use Firesphere\BootstrapMFA\Extensions\MemberExtension;
6
use Firesphere\BootstrapMFA\Models\BackupCode;
7
use SilverStripe\Control\Controller;
8
use SilverStripe\ORM\DataList;
9
use SilverStripe\ORM\ValidationException;
10
use SilverStripe\Security\Member;
11
12
class BootstrapMFAProvider
13
{
14
    protected $member;
15
16
    /**
17
     * @param string $token
18
     * @return null|BackupCode
19
     */
20
    public function fetchToken($token)
21
    {
22
        $member = $this->getMember();
23
24
        /** @var BackupCode $backupCode */
25
        $backupCode = BackupCode::getValidTokensForMember($member)
0 ignored issues
show
Bug introduced by
It seems like $member can also be of type Firesphere\BootstrapMFA\Extensions\MemberExtension; however, parameter $member of Firesphere\BootstrapMFA\...tValidTokensForMember() does only seem to accept SilverStripe\Security\Member, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

25
        $backupCode = BackupCode::getValidTokensForMember(/** @scrutinizer ignore-type */ $member)
Loading history...
26
            ->filter(['Code' => $token])
27
            ->first();
28
29
        return $backupCode;
30
    }
31
32
    /**
33
     * @return Member|MemberExtension|null
34
     */
35
    public function getMember()
36
    {
37
        return $this->member;
38
    }
39
40
    /**
41
     * @param Member $member
42
     */
43
    public function setMember($member)
44
    {
45
        $this->member = $member;
46
    }
47
48
    /**
49
     * @throws ValidationException
50
     */
51
    public function updateTokens()
52
    {
53
        // Clear any possible tokens in the session, just to be sure
54
        Controller::curr()->getRequest()->getSession()->clear('tokens');
55
56
        if ($member = $this->getMember()) {
57
            /** @var DataList|BackupCode[] $expiredCodes */
58
            $expiredCodes = BackupCode::get()->filter(['MemberID' => $member->ID]);
0 ignored issues
show
Bug introduced by
The property ID does not seem to exist on Firesphere\BootstrapMFA\Extensions\MemberExtension.
Loading history...
59
            $expiredCodes->removeAll();
60
61
            BackupCode::generateTokensForMember($member);
0 ignored issues
show
Bug introduced by
It seems like $member can also be of type Firesphere\BootstrapMFA\Extensions\MemberExtension; however, parameter $member of Firesphere\BootstrapMFA\...nerateTokensForMember() does only seem to accept SilverStripe\Security\Member, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

61
            BackupCode::generateTokensForMember(/** @scrutinizer ignore-type */ $member);
Loading history...
62
        }
63
        // Fail silently
64
    }
65
}
66