Passed
Pull Request — master (#24)
by Damian
01:51
created

AnonymousUserFactory::create()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 20
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 11
nc 2
nop 2
dl 0
loc 20
rs 9.9
c 0
b 0
f 0
1
<?php
2
3
namespace Firesphere\GraphQLJWT\Authentication;
4
5
use SilverStripe\Core\Config\Configurable;
6
use SilverStripe\Core\Injector\Factory;
7
use SilverStripe\ORM\ValidationException;
8
use SilverStripe\Security\Member;
9
10
class AnonymousUserFactory implements Factory
11
{
12
    use Configurable;
13
14
    /**
15
     * Default field values to assign to anonymous user
16
     *
17
     * @var array
18
     */
19
    private static $anonymous_fields = [
20
        'FirstName' => 'Anonymous',
21
    ];
22
23
    /**
24
     * Creates a new service instance.
25
     *
26
     * @param string $service The class name of the service.
27
     * @param array $params The constructor parameters.
28
     * @return Member The member that was created
29
     * @throws ValidationException
30
     */
31
    public function create($service, array $params = array())
32
    {
33
        // In case we configure multiple users
34
        $username = $params['username'] ?? 'anonymous';
35
        $identifierField = Member::config()->get('unique_identifier_field');
36
        $fields = static::config()->get('anonymous_fields');
37
38
        // Find existing member
39
        /** @var Member $member */
40
        $member = Member::get()->find($identifierField, $username);
41
        if ($member) {
0 ignored issues
show
introduced by
$member is of type SilverStripe\Security\Member, thus it always evaluated to true.
Loading history...
42
            return $member;
43
        }
44
45
        // Create new member
46
        $member = Member::create();
47
        $member->{$identifierField} = $username;
48
        $member->update($fields);
49
        $member->write();
50
        return $member;
51
    }
52
}
53