Skip to content

Commit 96c1d39

Browse files
authored
Merge pull request #423 from kenjis/fix-sa-errors
refactor: fix static analysis errors
2 parents 67b14ad + 88a3bc0 commit 96c1d39

File tree

6 files changed

+21
-0
lines changed

6 files changed

+21
-0
lines changed

src/Authentication/Authenticators/AccessTokens.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,8 @@ public function check(array $credentials): Result
115115
]);
116116
}
117117

118+
assert($token->last_used_at instanceof Time || $token->last_used_at === null);
119+
118120
// Hasn't been used in a long time
119121
if (
120122
$token->last_used_at

src/Entities/AccessToken.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,15 @@
55
namespace CodeIgniter\Shield\Entities;
66

77
use CodeIgniter\Entity\Entity;
8+
use CodeIgniter\I18n\Time;
89

910
/**
1011
* Class AccessToken
1112
*
1213
* Represents a single Personal Access Token, used
1314
* for authenticating users for an API.
15+
*
16+
* @property Time|null $last_used_at
1417
*/
1518
class AccessToken extends Entity
1619
{

src/Entities/User.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,20 @@
55
namespace CodeIgniter\Shield\Entities;
66

77
use CodeIgniter\Database\Exceptions\DataException;
8+
use CodeIgniter\I18n\Time;
89
use CodeIgniter\Shield\Authentication\Authenticators\Session;
910
use CodeIgniter\Shield\Authentication\Traits\HasAccessTokens;
1011
use CodeIgniter\Shield\Authorization\Traits\Authorizable;
1112
use CodeIgniter\Shield\Models\LoginModel;
1213
use CodeIgniter\Shield\Models\UserIdentityModel;
1314

15+
/**
16+
* @property string|null $email
17+
* @property UserIdentity[]|null $identities
18+
* @property Time|null $last_active
19+
* @property string|null $password
20+
* @property string|null $password_hash
21+
*/
1422
class User extends Entity
1523
{
1624
use Authorizable;

src/Entities/UserIdentity.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace CodeIgniter\Shield\Entities;
66

7+
use CodeIgniter\I18n\Time;
78
use CodeIgniter\Shield\Authentication\Passwords;
89

910
/**
@@ -19,6 +20,8 @@
1920
* OAUTH or JWT tokens, etc. A user can have multiple of each,
2021
* though a Authenticator may want to enforce only one exists for that
2122
* user, like a password.
23+
*
24+
* @property Time|null $last_used_at
2225
*/
2326
class UserIdentity extends Entity
2427
{

src/Models/UserModel.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace CodeIgniter\Shield\Models;
66

77
use CodeIgniter\Database\Exceptions\DataException;
8+
use CodeIgniter\I18n\Time;
89
use CodeIgniter\Model;
910
use CodeIgniter\Shield\Authentication\Authenticators\Session;
1011
use CodeIgniter\Shield\Entities\User;
@@ -325,6 +326,8 @@ protected function saveEmailIdentity(array $data): array
325326
*/
326327
public function updateActiveDate(User $user): void
327328
{
329+
assert($user->last_active instanceof Time);
330+
328331
// Safe date string for database
329332
$last_active = $user->last_active->format('Y-m-d H:i:s');
330333

tests/Controllers/LoginTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ public function testLoginActionEmailSuccess(): void
8989
]);
9090
// Last Used date should have been set
9191
$identity = $this->user->getEmailIdentity();
92+
$this->assertInstanceOf(Time::class, $identity->last_used_at);
9293
$this->assertSame(Time::now()->getTimestamp(), $identity->last_used_at->getTimestamp());
9394

9495
// Session should have `logged_in` value with user's id
@@ -151,6 +152,7 @@ public function testLoginActionUsernameSuccess(): void
151152
]);
152153
// Last Used date should have been set
153154
$identity = $this->user->getEmailIdentity();
155+
$this->assertInstanceOf(Time::class, $identity->last_used_at);
154156
$this->assertSame(Time::now()->getTimestamp(), $identity->last_used_at->getTimestamp());
155157

156158
// Session should have `logged_in` value with user's id

0 commit comments

Comments
 (0)