Completed
Push — master ( d874fd...3a6bc2 )
by Conrad
01:56
created

src/Models/Client.php (3 issues)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
namespace AdvancedLearning\Oauth2Server\Models;
4
5
use function base64_encode;
6
use SilverStripe\ORM\DataObject;
7
8
/**
9
 * Stores ClientEntity information.
10
 *
11
 * @package AdvancedLearning\Oauth2Server\Models
12
 *
13
 * @property string $Grants
14
 * @property string $Name
15
 * @property string $Secret
16
 * @property string $Identifier
17
 */
18
class Client extends DataObject
19
{
20
    private static $table_name = 'OauthClient';
0 ignored issues
show
Comprehensibility introduced by
Consider using a different property name as you override a private property of the parent class.
Loading history...
21
22
    private static $db = [
0 ignored issues
show
Comprehensibility introduced by
Consider using a different property name as you override a private property of the parent class.
Loading history...
23
        'Name' => 'Varchar(100)',
24
        'Grants' => 'Varchar(255)',
25
        'Secret' => 'Varchar(255)',
26
        'Identifier' => 'Varchar(255)'
27
    ];
28
29
    private static $summary_fields = [
0 ignored issues
show
Comprehensibility introduced by
Consider using a different property name as you override a private property of the parent class.
Loading history...
30
        'Name'
31
    ];
32
33
    /**
34
     * Checks whether this ClientEntity has the given grant type.
35
     *
36
     * @param string $grantType The grant type to check.
37
     *
38
     * @return boolean
39
     */
40
    public function hasGrantType($grantType)
41
    {
42
        $grants = explode(',', $this->Grants);
43
44
        return !empty($grants) && in_array($grantType, $grants);
45
    }
46
47
    /**
48
     * On before write. Generate a secret if we don't have one.
49
     */
50
    public function onBeforeWrite()
51
    {
52
        parent::onBeforeWrite();
53
54
        if (empty($this->Secret)) {
55
            $this->Secret = $this->generateSecret();
56
        }
57
58
        if (empty($this->Identifier)) {
59
            $this->Identifier = $this->generateSecret();
60
        }
61
    }
62
63
    /**
64
     * Generate a random secret.
65
     *
66
     * @return string
67
     */
68
    protected function generateSecret()
69
    {
70
        return base64_encode(random_bytes(32));
71
    }
72
}
73