Passed
Pull Request — master (#38)
by Simon
01:47
created

BootstrapMFAProvider::updateTokens()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 11
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 5
nc 2
nop 0
dl 0
loc 11
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Firesphere\BootstrapMFA\Providers;
4
5
use ElliotSawyer\TOTPAuthenticator\MemberExtension;
0 ignored issues
show
Bug introduced by
The type ElliotSawyer\TOTPAuthenticator\MemberExtension was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
6
use Firesphere\BootstrapMFA\Extensions\MemberExtension as MFAMemberExtension;
7
use Firesphere\BootstrapMFA\Models\BackupCode;
8
use SilverStripe\Control\Controller;
9
use SilverStripe\ORM\DataList;
10
use SilverStripe\ORM\ValidationException;
11
use SilverStripe\Security\Member;
12
13
class BootstrapMFAProvider
14
{
15
    protected $member;
16
17
    /**
18
     * @param string $token
19
     * @return null|BackupCode
20
     */
21
    public function fetchToken($token)
22
    {
23
        $member = $this->getMember();
24
25
        /** @var BackupCode $backupCode */
26
        $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

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

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