Issues (35)

src/Authentication/AnonymousUserFactory.php (2 issues)

Severity
1
<?php declare(strict_types=1);
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 = [
0 ignored issues
show
The private property $anonymous_fields is not used, and could be removed.
Loading history...
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
$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->__set($identifierField, $username);
48
        $member->update($fields);
49
        $member->write();
50
        return $member;
51
    }
52
}
53