Completed
Push — master ( 4e92df...3d6026 )
by Robbie
12s
created

RegisteredMFAMethodListField::getBackupMethod()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 2
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace SilverStripe\MFA\FormField;
4
5
use SilverStripe\Admin\SecurityAdmin;
6
use SilverStripe\Forms\FormField;
7
use SilverStripe\MFA\Controller\AdminRegistrationController;
8
use SilverStripe\MFA\Model\RegisteredMethod;
9
use SilverStripe\MFA\Service\MethodRegistry;
10
use SilverStripe\MFA\Service\RegisteredMethodManager;
11
use SilverStripe\MFA\Service\SchemaGenerator;
12
use SilverStripe\Security\Security;
13
14
class RegisteredMFAMethodListField extends FormField
15
{
16
    public function Field($properties = array())
17
    {
18
        return $this->renderWith(self::class);
19
    }
20
21
    /**
22
     * @return array
23
     */
24
    public function getSchemaDataDefaults()
25
    {
26
        $defaults = parent::getSchemaDataDefaults();
27
28
        $adminController = AdminRegistrationController::singleton();
29
        $generator = SchemaGenerator::create();
30
31
        return array_merge($defaults, [
32
            'schema' => $generator->getSchema($this->value) + [
33
                'endpoints' => [
34
                    'register' => $adminController->Link('register/{urlSegment}'),
35
                    'remove' => $adminController->Link('remove/{urlSegment}'),
36
                ],
37
                // We need all available methods so we can re-register pre-existing methods
38
                'allAvailableMethods' => $generator->getAvailableMethods(),
39
                'backupCreationDate' => $this->getBackupMethod()
40
                    ? $this->getBackupMethod()->Created
41
                    : null,
42
                'resetEndpoint' => SecurityAdmin::singleton()->Link("reset/{$this->value->ID}"),
43
            ],
44
        ]);
45
    }
46
47
    /**
48
     * Get the registered backup method (if any) from the currently logged in user.
49
     *
50
     * @return RegisteredMethod|null
51
     */
52
    protected function getBackupMethod(): ?RegisteredMethod
53
    {
54
        $backupMethod = MethodRegistry::singleton()->getBackupMethod();
55
        return RegisteredMethodManager::singleton()->getFromMember(Security::getCurrentUser(), $backupMethod);
56
    }
57
}
58