ROAResearch /
yii2-oauth2-server
| 1 | <?php |
||||
| 2 | |||||
| 3 | namespace roaresearch\yii2\oauth2server\models; |
||||
| 4 | |||||
| 5 | use Yii; |
||||
| 6 | use yii\db\{ActiveQuery, ActiveRecord, IntegrityException}; |
||||
| 7 | |||||
| 8 | /** |
||||
| 9 | * This is the model class for table "oauth_clients". |
||||
| 10 | * |
||||
| 11 | * @property string $client_id |
||||
| 12 | * @property string $client_secret |
||||
| 13 | * @property string $redirect_uri |
||||
| 14 | * @property string $grant_types |
||||
| 15 | * @property string $scope |
||||
| 16 | * @property integer $user_id |
||||
| 17 | * |
||||
| 18 | * @property OauthAccessTokens[] $oauthAccessTokens |
||||
| 19 | * @property OauthAuthorizationCodes[] $oauthAuthorizationCodes |
||||
| 20 | * @property OauthRefreshTokens[] $oauthRefreshTokens |
||||
| 21 | */ |
||||
| 22 | class OauthClients extends ActiveRecord |
||||
| 23 | { |
||||
| 24 | /** |
||||
| 25 | * @inheritdoc |
||||
| 26 | */ |
||||
| 27 | 2 | public static function tableName(): string |
|||
| 28 | { |
||||
| 29 | 2 | return '{{%oauth_clients}}'; |
|||
| 30 | } |
||||
| 31 | |||||
| 32 | /** |
||||
| 33 | * @inheritdoc |
||||
| 34 | */ |
||||
| 35 | public function rules(): array |
||||
| 36 | { |
||||
| 37 | return [ |
||||
| 38 | [ |
||||
| 39 | ['client_id', 'client_secret', 'redirect_uri', 'grant_types'], |
||||
| 40 | 'required', |
||||
| 41 | ], |
||||
| 42 | [['user_id'], 'integer'], |
||||
| 43 | [['client_id', 'client_secret'], 'string', 'max' => 32], |
||||
| 44 | [['redirect_uri'], 'string', 'max' => 1000], |
||||
| 45 | [['grant_types'], 'string', 'max' => 100], |
||||
| 46 | [['scope'], 'string', 'max' => 2000] |
||||
| 47 | ]; |
||||
| 48 | } |
||||
| 49 | |||||
| 50 | /** |
||||
| 51 | * @inheritdoc |
||||
| 52 | */ |
||||
| 53 | public function attributeLabels(): array |
||||
| 54 | { |
||||
| 55 | return [ |
||||
| 56 | 'client_id' => 'Client ID', |
||||
| 57 | 'client_secret' => 'Client Secret', |
||||
| 58 | 'redirect_uri' => 'Redirect Uri', |
||||
| 59 | 'grant_types' => 'Grant Types', |
||||
| 60 | 'scope' => 'Scope', |
||||
| 61 | 'user_id' => 'User ID', |
||||
| 62 | ]; |
||||
| 63 | } |
||||
| 64 | |||||
| 65 | /** |
||||
| 66 | * @return ActiveQuery |
||||
| 67 | */ |
||||
| 68 | public function getOauthAccessTokens(): ActiveQuery |
||||
| 69 | { |
||||
| 70 | return $this->hasMany( |
||||
| 71 | OauthAccessTokens::class, |
||||
| 72 | ['client_id' => 'client_id'] |
||||
| 73 | )->inverseOf('client'); |
||||
| 74 | } |
||||
| 75 | |||||
| 76 | /** |
||||
| 77 | * @return ActiveQuery |
||||
| 78 | */ |
||||
| 79 | public function getOauthAuthorizationCodes(): ActiveQuery |
||||
| 80 | { |
||||
| 81 | return $this->hasMany( |
||||
| 82 | OauthAuthorizationCodes::class, |
||||
| 83 | ['client_id' => 'client_id'] |
||||
| 84 | )->inverseOf('client'); |
||||
| 85 | } |
||||
| 86 | |||||
| 87 | /** |
||||
| 88 | * @return ActiveQuery |
||||
| 89 | */ |
||||
| 90 | public function getOauthRefreshTokens(): ActiveQuery |
||||
| 91 | { |
||||
| 92 | return $this->hasMany( |
||||
| 93 | OauthRefreshTokens::class, |
||||
| 94 | ['client_id' => 'client_id'] |
||||
| 95 | )->inverseOf('client'); |
||||
| 96 | } |
||||
| 97 | |||||
| 98 | public function assureScope(string $scope): OauthScopes |
||||
| 99 | { |
||||
| 100 | if (!str_contains($this->scopes, $scope)) { |
||||
|
0 ignored issues
–
show
Bug
Best Practice
introduced
by
Loading history...
It seems like
$this->scopes can also be of type null; however, parameter $haystack of str_contains() does only seem to accept string, 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
Loading history...
|
|||||
| 101 | $this->unknownScope($scope ); |
||||
| 102 | } |
||||
| 103 | |||||
| 104 | return OauthScopes::findOne($scope) ?: $this->unknownScope($scope); |
||||
|
0 ignored issues
–
show
|
|||||
| 105 | |||||
| 106 | } |
||||
| 107 | |||||
| 108 | public function validateUri(string $uri): bool |
||||
| 109 | { |
||||
| 110 | return str_contains($this->redirect_uri, $uri); |
||||
| 111 | } |
||||
| 112 | |||||
| 113 | protected function unknownScope(string $scope): never |
||||
| 114 | { |
||||
| 115 | throw new IntegrityException( |
||||
| 116 | OauthScopes::class, |
||||
| 117 | "Unknown scope '$scope'" |
||||
|
0 ignored issues
–
show
'Unknown scope ''.$scope.''' of type string is incompatible with the type array expected by parameter $errorInfo of yii\db\IntegrityException::__construct().
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||
| 118 | ); |
||||
| 119 | } |
||||
| 120 | } |
||||
| 121 |