Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
},
"require-dev": {
"boundwize/structarmed": "0.13.4",
"codeigniter/phpstan-codeigniter": "^1.3",
"codeigniter/phpstan-codeigniter": "^2.0",
"codeigniter4/devkit": "^1.3",
"codeigniter4/framework": ">=4.3.5 <4.5.0 || ^4.5.1",
"firebase/php-jwt": "^7.0.3",
Expand Down
144 changes: 9 additions & 135 deletions phpstan-baseline.php
Original file line number Diff line number Diff line change
@@ -1,42 +1,18 @@
<?php declare(strict_types = 1);

$ignoreErrors = [];
$ignoreErrors[] = [
'rawMessage' => 'Call to function model with CodeIgniter\\Shield\\Models\\UserIdentityModel::class is discouraged.',
'identifier' => 'codeigniter.factoriesClassConstFetch',
'count' => 2,
'path' => __DIR__ . '/src/Authentication/Actions/Email2FA.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Construct empty() is not allowed. Use more strict comparison.',
'identifier' => 'empty.notAllowed',
'count' => 1,
'path' => __DIR__ . '/src/Authentication/Actions/Email2FA.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Call to function model with CodeIgniter\\Shield\\Models\\UserIdentityModel::class is discouraged.',
'identifier' => 'codeigniter.factoriesClassConstFetch',
'count' => 2,
'path' => __DIR__ . '/src/Authentication/Actions/EmailActivator.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Construct empty() is not allowed. Use more strict comparison.',
'identifier' => 'empty.notAllowed',
'count' => 1,
'path' => __DIR__ . '/src/Authentication/Authentication.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Call to function model with CodeIgniter\\Shield\\Models\\TokenLoginModel::class is discouraged.',
'identifier' => 'codeigniter.factoriesClassConstFetch',
'count' => 1,
'path' => __DIR__ . '/src/Authentication/Authenticators/AccessTokens.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Call to function model with CodeIgniter\\Shield\\Models\\UserIdentityModel::class is discouraged.',
'identifier' => 'codeigniter.factoriesClassConstFetch',
'count' => 1,
'path' => __DIR__ . '/src/Authentication/Authenticators/AccessTokens.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Construct empty() is not allowed. Use more strict comparison.',
'identifier' => 'empty.notAllowed',
Expand All @@ -49,24 +25,6 @@
'count' => 1,
'path' => __DIR__ . '/src/Authentication/Authenticators/AccessTokens.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Call to function model with CodeIgniter\\Shield\\Models\\TokenLoginModel::class is discouraged.',
'identifier' => 'codeigniter.factoriesClassConstFetch',
'count' => 1,
'path' => __DIR__ . '/src/Authentication/Authenticators/HmacSha256.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Call to function model with CodeIgniter\\Shield\\Models\\UserIdentityModel::class is discouraged.',
'identifier' => 'codeigniter.factoriesClassConstFetch',
'count' => 1,
'path' => __DIR__ . '/src/Authentication/Authenticators/HmacSha256.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Call to function model with CodeIgniter\\Shield\\Models\\TokenLoginModel::class is discouraged.',
'identifier' => 'codeigniter.factoriesClassConstFetch',
'count' => 1,
'path' => __DIR__ . '/src/Authentication/Authenticators/JWT.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Parameter #1 $credentials (array{token?: string}) of method CodeIgniter\\Shield\\Authentication\\Authenticators\\JWT::attempt() should be contravariant with parameter $credentials (array) of method CodeIgniter\\Shield\\Authentication\\AuthenticatorInterface::attempt()',
'identifier' => 'method.childParameterType',
Expand All @@ -79,24 +37,6 @@
'count' => 1,
'path' => __DIR__ . '/src/Authentication/Authenticators/JWT.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Call to function model with CodeIgniter\\Shield\\Models\\LoginModel::class is discouraged.',
'identifier' => 'codeigniter.factoriesClassConstFetch',
'count' => 1,
'path' => __DIR__ . '/src/Authentication/Authenticators/Session.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Call to function model with CodeIgniter\\Shield\\Models\\RememberModel::class is discouraged.',
'identifier' => 'codeigniter.factoriesClassConstFetch',
'count' => 1,
'path' => __DIR__ . '/src/Authentication/Authenticators/Session.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Call to function model with CodeIgniter\\Shield\\Models\\UserIdentityModel::class is discouraged.',
'identifier' => 'codeigniter.factoriesClassConstFetch',
'count' => 1,
'path' => __DIR__ . '/src/Authentication/Authenticators/Session.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Construct empty() is not allowed. Use more strict comparison.',
'identifier' => 'empty.notAllowed',
Expand Down Expand Up @@ -163,30 +103,6 @@
'count' => 11,
'path' => __DIR__ . '/src/Commands/Hmac.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Call to function model with CodeIgniter\\Shield\\Models\\GroupModel::class is discouraged.',
'identifier' => 'codeigniter.factoriesClassConstFetch',
'count' => 1,
'path' => __DIR__ . '/src/Commands/User.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Call to function model with CodeIgniter\\Shield\\Models\\UserModel::class is discouraged.',
'identifier' => 'codeigniter.factoriesClassConstFetch',
'count' => 9,
'path' => __DIR__ . '/src/Commands/User.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Call to function model with CodeIgniter\\Shield\\Models\\LoginModel::class is discouraged.',
'identifier' => 'codeigniter.factoriesClassConstFetch',
'count' => 1,
'path' => __DIR__ . '/src/Controllers/MagicLinkController.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Call to function model with CodeIgniter\\Shield\\Models\\UserIdentityModel::class is discouraged.',
'identifier' => 'codeigniter.factoriesClassConstFetch',
'count' => 2,
'path' => __DIR__ . '/src/Controllers/MagicLinkController.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Call to function assert() with false and \'Config Auth…\' will always evaluate to false.',
'identifier' => 'function.impossibleType',
Expand Down Expand Up @@ -217,30 +133,6 @@
'count' => 1,
'path' => __DIR__ . '/src/Database/Migrations/2020-12-28-223112_create_auth_tables.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Call to function model with CodeIgniter\\Shield\\Models\\GroupModel::class is discouraged.',
'identifier' => 'codeigniter.factoriesClassConstFetch',
'count' => 4,
'path' => __DIR__ . '/src/Entities/User.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Call to function model with CodeIgniter\\Shield\\Models\\LoginModel::class is discouraged.',
'identifier' => 'codeigniter.factoriesClassConstFetch',
'count' => 2,
'path' => __DIR__ . '/src/Entities/User.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Call to function model with CodeIgniter\\Shield\\Models\\PermissionModel::class is discouraged.',
'identifier' => 'codeigniter.factoriesClassConstFetch',
'count' => 2,
'path' => __DIR__ . '/src/Entities/User.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Call to function model with CodeIgniter\\Shield\\Models\\UserIdentityModel::class is discouraged.',
'identifier' => 'codeigniter.factoriesClassConstFetch',
'count' => 23,
'path' => __DIR__ . '/src/Entities/User.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Only booleans are allowed in a ternary operator condition, int<0, max> given.',
'identifier' => 'ternary.condNotBoolean',
Expand Down Expand Up @@ -361,24 +253,6 @@
'count' => 1,
'path' => __DIR__ . '/src/Filters/TokenAuth.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Call to function model with CodeIgniter\\Shield\\Models\\GroupModel::class is discouraged.',
'identifier' => 'codeigniter.factoriesClassConstFetch',
'count' => 2,
'path' => __DIR__ . '/src/Models/UserModel.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Call to function model with CodeIgniter\\Shield\\Models\\PermissionModel::class is discouraged.',
'identifier' => 'codeigniter.factoriesClassConstFetch',
'count' => 1,
'path' => __DIR__ . '/src/Models/UserModel.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Call to function model with CodeIgniter\\Shield\\Models\\UserIdentityModel::class is discouraged.',
'identifier' => 'codeigniter.factoriesClassConstFetch',
'count' => 1,
'path' => __DIR__ . '/src/Models/UserModel.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Construct empty() is not allowed. Use more strict comparison.',
'identifier' => 'empty.notAllowed',
Expand Down Expand Up @@ -424,7 +298,7 @@
$ignoreErrors[] = [
'rawMessage' => 'Call to method setCookie() of internal class CodeIgniter\\Superglobals from outside its root namespace CodeIgniter.',
'identifier' => 'method.internalClass',
'count' => 1,
'count' => 2,
'path' => __DIR__ . '/tests/Authentication/Authenticators/SessionAuthenticatorTest.php',
];
$ignoreErrors[] = [
Expand All @@ -446,25 +320,25 @@
'path' => __DIR__ . '/tests/Authentication/HasAccessTokensTest.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Accessing offset \'HTTP_USER_AGENT\' directly on $_SERVER is discouraged.',
'identifier' => 'codeigniter.superglobalAccess',
'count' => 1,
'rawMessage' => 'Call to method setServer() of internal class CodeIgniter\\Superglobals from outside its root namespace CodeIgniter.',
'identifier' => 'method.internalClass',
'count' => 2,
'path' => __DIR__ . '/tests/Controllers/ActionsTest.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Call to method setServer() of internal class CodeIgniter\\Superglobals from outside its root namespace CodeIgniter.',
'rawMessage' => 'Call to method unsetServer() of internal class CodeIgniter\\Superglobals from outside its root namespace CodeIgniter.',
'identifier' => 'method.internalClass',
'count' => 2,
'count' => 1,
'path' => __DIR__ . '/tests/Controllers/ActionsTest.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Accessing offset \'HTTP_USER_AGENT\' directly on $_SERVER is discouraged.',
'identifier' => 'codeigniter.superglobalAccess',
'rawMessage' => 'Call to method setServer() of internal class CodeIgniter\\Superglobals from outside its root namespace CodeIgniter.',
'identifier' => 'method.internalClass',
'count' => 1,
'path' => __DIR__ . '/tests/Controllers/MagicLinkTest.php',
];
$ignoreErrors[] = [
'rawMessage' => 'Call to method setServer() of internal class CodeIgniter\\Superglobals from outside its root namespace CodeIgniter.',
'rawMessage' => 'Call to method unsetServer() of internal class CodeIgniter\\Superglobals from outside its root namespace CodeIgniter.',
'identifier' => 'method.internalClass',
'count' => 1,
'path' => __DIR__ . '/tests/Controllers/MagicLinkTest.php',
Expand Down
2 changes: 2 additions & 0 deletions rector.php
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,9 @@
__DIR__ . '/tests/Authentication/Authenticators/SessionAuthenticatorTest.php',
__DIR__ . '/tests/Commands/SetupTest.php',
__DIR__ . '/tests/Commands/UserModelGeneratorTest.php',
__DIR__ . '/tests/Controllers/ActionsTest.php',
__DIR__ . '/tests/Controllers/LoginTest.php',
__DIR__ . '/tests/Controllers/MagicLinkTest.php',
],
RemoveUnusedPrivatePropertyRector::class => [
__DIR__ . '/src/Test/MockInputOutput.php',
Expand Down
2 changes: 0 additions & 2 deletions src/Authentication/Actions/Email2FA.php
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,6 @@ public function verify(IncomingRequest $request)
*/
public function createIdentity(User $user): string
{
/** @var UserIdentityModel $identityModel */
$identityModel = model(UserIdentityModel::class);

// Delete any previous identities for action
Expand All @@ -169,7 +168,6 @@ public function createIdentity(User $user): string
*/
private function getIdentity(User $user): ?UserIdentity
{
/** @var UserIdentityModel $identityModel */
$identityModel = model(UserIdentityModel::class);

return $identityModel->getIdentityByType(
Expand Down
2 changes: 0 additions & 2 deletions src/Authentication/Actions/EmailActivator.php
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,6 @@ public function verify(IncomingRequest $request)
*/
public function createIdentity(User $user): string
{
/** @var UserIdentityModel $identityModel */
$identityModel = model(UserIdentityModel::class);

// Delete any previous identities for action
Expand All @@ -161,7 +160,6 @@ public function createIdentity(User $user): string
*/
private function getIdentity(User $user): ?UserIdentity
{
/** @var UserIdentityModel $identityModel */
$identityModel = model(UserIdentityModel::class);

return $identityModel->getIdentityByType(
Expand Down
3 changes: 0 additions & 3 deletions src/Authentication/Authenticators/AccessTokens.php
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,6 @@ public function check(array $credentials): Result
$credentials['token'] = trim(substr((string) $credentials['token'], 6));
}

/** @var UserIdentityModel $identityModel */
$identityModel = model(UserIdentityModel::class);

$token = $identityModel->getAccessTokenByRawToken($credentials['token']);
Expand All @@ -152,8 +151,6 @@ public function check(array $credentials): Result
]);
}

assert($token->last_used_at instanceof Time || $token->last_used_at === null);

// Is expired ?
if (
$token->expires instanceof Time
Expand Down
3 changes: 0 additions & 3 deletions src/Authentication/Authenticators/HmacSha256.php
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,6 @@ public function check(array $credentials): Result
// Extract UserToken and HMACSHA256 Signature from Authorization token
[$userToken, $signature] = $this->getHmacAuthTokens($credentials['token']);

/** @var UserIdentityModel $identityModel */
$identityModel = model(UserIdentityModel::class);

$token = $identityModel->getHmacTokenByKey($userToken);
Expand All @@ -168,8 +167,6 @@ public function check(array $credentials): Result
]);
}

assert($token->last_used_at instanceof Time || $token->last_used_at === null);

// Hasn't been used in a long time
if (
isset($token->last_used_at)
Expand Down
9 changes: 0 additions & 9 deletions src/Authentication/Traits/HasAccessTokens.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ trait HasAccessTokens
*/
public function generateAccessToken(string $name, array $scopes = ['*'], ?Time $expiresAt = null): AccessToken
{
/** @var UserIdentityModel $identityModel */
$identityModel = model(UserIdentityModel::class);

return $identityModel->generateAccessToken($this, $name, $scopes, $expiresAt);
Expand All @@ -56,7 +55,6 @@ public function generateAccessToken(string $name, array $scopes = ['*'], ?Time $
*/
public function revokeAccessToken(string $rawToken): void
{
/** @var UserIdentityModel $identityModel */
$identityModel = model(UserIdentityModel::class);

$identityModel->revokeAccessToken($this, $rawToken);
Expand All @@ -67,7 +65,6 @@ public function revokeAccessToken(string $rawToken): void
*/
public function revokeAccessTokenBySecret(string $secretToken): void
{
/** @var UserIdentityModel $identityModel */
$identityModel = model(UserIdentityModel::class);

$identityModel->revokeAccessTokenBySecret($this, $secretToken);
Expand All @@ -78,7 +75,6 @@ public function revokeAccessTokenBySecret(string $secretToken): void
*/
public function revokeAllAccessTokens(): void
{
/** @var UserIdentityModel $identityModel */
$identityModel = model(UserIdentityModel::class);

$identityModel->revokeAllAccessTokens($this);
Expand All @@ -91,7 +87,6 @@ public function revokeAllAccessTokens(): void
*/
public function accessTokens(): array
{
/** @var UserIdentityModel $identityModel */
$identityModel = model(UserIdentityModel::class);

return $identityModel->getAllAccessTokens($this);
Expand All @@ -107,7 +102,6 @@ public function getAccessToken(?string $rawToken): ?AccessToken
return null;
}

/** @var UserIdentityModel $identityModel */
$identityModel = model(UserIdentityModel::class);

return $identityModel->getAccessToken($this, $rawToken);
Expand All @@ -118,7 +112,6 @@ public function getAccessToken(?string $rawToken): ?AccessToken
*/
public function getAccessTokenById(int $id): ?AccessToken
{
/** @var UserIdentityModel $identityModel */
$identityModel = model(UserIdentityModel::class);

return $identityModel->getAccessTokenById($id, $this);
Expand Down Expand Up @@ -190,7 +183,6 @@ public function isAccessTokenExpired(AccessToken $accessToken): bool
*/
public function updateAccessTokenExpiration(int $id, Time $expiresAt): bool
{
/** @var UserIdentityModel $identityModel */
$identityModel = model(UserIdentityModel::class);
$result = $identityModel->setIdentityExpirationById($id, $this, $expiresAt);

Expand All @@ -211,7 +203,6 @@ public function updateAccessTokenExpiration(int $id, Time $expiresAt): bool
*/
public function removeAccessTokenExpiration(int $id): bool
{
/** @var UserIdentityModel $identityModel */
$identityModel = model(UserIdentityModel::class);
$result = $identityModel->setIdentityExpirationById($id, $this);

Expand Down
Loading
Loading