BootstrapMFAProvider   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 11
dl 0
loc 45
rs 10
c 0
b 0
f 0
wmc 5

4 Methods

Rating   Name   Duplication   Size   Complexity  
A fetchToken() 0 5 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 null|string $token If it's a specific token to be fetched
18
     * @return DataList|BackupCode[]
19
     */
20
    public function fetchToken($token = null)
0 ignored issues
show
Unused Code introduced by
The parameter $token is not used and could be removed. ( Ignorable by Annotation )

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

20
    public function fetchToken(/** @scrutinizer ignore-unused */ $token = null)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
21
    {
22
        $member = $this->getMember();
23
24
        return BackupCode::getTokensForMember($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\...e::getTokensForMember() 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

24
        return BackupCode::getTokensForMember(/** @scrutinizer ignore-type */ $member);
Loading history...
25
    }
26
27
    /**
28
     * @return Member|MemberExtension|null
29
     */
30
    public function getMember()
31
    {
32
        return $this->member;
33
    }
34
35
    /**
36
     * @param Member $member
37
     */
38
    public function setMember($member)
39
    {
40
        $this->member = $member;
41
    }
42
43
    /**
44
     * @throws ValidationException
45
     */
46
    public function updateTokens()
47
    {
48
        // Clear any possible tokens in the session, just to be sure
49
        Controller::curr()->getRequest()->getSession()->clear('tokens');
50
51
        if ($member = $this->getMember()) {
52
            /** @var DataList|BackupCode[] $expiredCodes */
53
            $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...
54
            $expiredCodes->removeAll();
55
56
            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

56
            BackupCode::generateTokensForMember(/** @scrutinizer ignore-type */ $member);
Loading history...
57
        }
58
        // Fail silently
59
    }
60
}
61