Skip to content

Commit 25778aa

Browse files
authored
Merge pull request #146 from codeigniter4/param-types
Refactor: Object Parameters
2 parents 44901bc + 2ca15ca commit 25778aa

File tree

12 files changed

+61
-93
lines changed

12 files changed

+61
-93
lines changed

src/Authentication/Actions/Email2FA.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public function handle(IncomingRequest $request)
6363
/** @var UserIdentityModel $identityModel */
6464
$identityModel = model(UserIdentityModel::class);
6565

66-
$identity = $identityModel->getIdentityByType($user->getAuthId(), $this->type);
66+
$identity = $identityModel->getIdentityByType($user, $this->type);
6767

6868
if (empty($identity)) {
6969
return redirect()->route('auth-action-show')->with('error', lang('Auth.need2FA'));
@@ -126,7 +126,7 @@ private function createIdentity(User $user): void
126126
$userIdentityModel = model(UserIdentityModel::class);
127127

128128
// Delete any previous activation identities
129-
$userIdentityModel->deleteIdentitiesByType($user->getAuthId(), $this->type);
129+
$userIdentityModel->deleteIdentitiesByType($user, $this->type);
130130

131131
// Create an identity for our 2fa hash
132132
$code = random_string('nozero', 6);

src/Authentication/Actions/EmailActivator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ private function createIdentity(User $user): string
112112
/** @var UserIdentityModel $userIdentityModel */
113113
$userIdentityModel = model(UserIdentityModel::class);
114114

115-
$userIdentityModel->deleteIdentitiesByType($user->getAuthId(), $this->type);
115+
$userIdentityModel->deleteIdentitiesByType($user, $this->type);
116116

117117
// Create an identity for our activation hash
118118
$code = random_string('nozero', 6);

src/Authentication/Authenticators/Session.php

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ public function checkAction(string $type, string $token): bool
156156
}
157157

158158
// On success - remove the identity and clean up session
159-
$this->userIdentityModel->deleteIdentitiesByType($user->getAuthId(), $type);
159+
$this->userIdentityModel->deleteIdentitiesByType($user, $type);
160160

161161
// Clean up our session
162162
session()->remove('auth_action');
@@ -287,7 +287,7 @@ private function checkUserState(): void
287287
$this->user = $this->provider->findById($userId);
288288

289289
$identities = $this->userIdentityModel->getIdentitiesByTypes(
290-
$this->user->getAuthId(),
290+
$this->user,
291291
$this->getActionTypes()
292292
);
293293

@@ -474,7 +474,7 @@ public function login(User $user): void
474474
private function issueRememberMeToken()
475475
{
476476
if ($this->shouldRemember && setting('Auth.sessionConfig')['allowRemembering']) {
477-
$this->rememberUser($this->user->getAuthId());
477+
$this->rememberUser($this->user);
478478

479479
// Reset so it doesn't mess up future calls.
480480
$this->shouldRemember = false;
@@ -533,7 +533,7 @@ public function logout(): bool
533533
session()->regenerate(true);
534534

535535
// Take care of any remember-me functionality
536-
$this->rememberModel->purgeRememberTokens($this->user->getAuthId());
536+
$this->rememberModel->purgeRememberTokens($this->user);
537537

538538
// Trigger logout event
539539
$result = Events::trigger('logout', $this->user);
@@ -545,20 +545,15 @@ public function logout(): bool
545545

546546
/**
547547
* Removes any remember-me tokens, if applicable.
548-
*
549-
* @param int|string|null $userId ID of user to forget.
550548
*/
551-
public function forget($userId = null): void
549+
public function forget(?User $user = null): void
552550
{
553-
if (empty($userId)) {
554-
if (! $this->loggedIn()) {
555-
return;
556-
}
557-
558-
$userId = $this->user->getAuthId();
551+
$user ??= $this->user;
552+
if ($user === null) {
553+
return;
559554
}
560555

561-
$this->rememberModel->purgeRememberTokens($userId);
556+
$this->rememberModel->purgeRememberTokens($user);
562557
}
563558

564559
/**
@@ -611,11 +606,9 @@ public function recordActiveDate(): void
611606
*
612607
* @see https://paragonie.com/blog/2015/04/secure-authentication-php-with-long-term-persistence
613608
*
614-
* @param int|string $userId
615-
*
616609
* @throws Exception
617610
*/
618-
protected function rememberUser($userId): void
611+
protected function rememberUser(User $user): void
619612
{
620613
$selector = bin2hex(random_bytes(12));
621614
$validator = bin2hex(random_bytes(20));
@@ -625,7 +618,7 @@ protected function rememberUser($userId): void
625618

626619
// Store it in the database.
627620
$this->rememberModel->rememberUser(
628-
$userId,
621+
$user,
629622
$selector,
630623
$this->hashValidator($validator),
631624
$expires

src/Authentication/Traits/HasAccessTokens.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public function revokeAccessToken(string $rawToken): bool
5959
/** @var UserIdentityModel $identityModel */
6060
$identityModel = model(UserIdentityModel::class);
6161

62-
return $identityModel->revokeAccessToken($this->id, $rawToken);
62+
return $identityModel->revokeAccessToken($this, $rawToken);
6363
}
6464

6565
/**
@@ -70,7 +70,7 @@ public function revokeAllAccessTokens(): bool
7070
/** @var UserIdentityModel $identityModel */
7171
$identityModel = model(UserIdentityModel::class);
7272

73-
return $identityModel->revokeAllAccessTokens($this->id);
73+
return $identityModel->revokeAllAccessTokens($this);
7474
}
7575

7676
/**
@@ -83,7 +83,7 @@ public function accessTokens(): array
8383
/** @var UserIdentityModel $identityModel */
8484
$identityModel = model(UserIdentityModel::class);
8585

86-
return $identityModel->getAllAccessTokens($this->id);
86+
return $identityModel->getAllAccessTokens($this);
8787
}
8888

8989
/**
@@ -99,7 +99,7 @@ public function getAccessToken(?string $rawToken): ?AccessToken
9999
/** @var UserIdentityModel $identityModel */
100100
$identityModel = model(UserIdentityModel::class);
101101

102-
return $identityModel->getAccessToken($this->id, $rawToken);
102+
return $identityModel->getAccessToken($this, $rawToken);
103103
}
104104

105105
/**
@@ -110,7 +110,7 @@ public function getAccessTokenById(int $id): ?AccessToken
110110
/** @var UserIdentityModel $identityModel */
111111
$identityModel = model(UserIdentityModel::class);
112112

113-
return $identityModel->getAccessTokenById($id, $this->id);
113+
return $identityModel->getAccessTokenById($id, $this);
114114
}
115115

116116
/**

src/Authorization/Traits/Authorizable.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ private function populateGroups(): void
293293
/** @var GroupModel $groupModel */
294294
$groupModel = model(GroupModel::class);
295295

296-
$this->groupCache = $groupModel->getByUserId($this->id);
296+
$this->groupCache = $groupModel->getForUser($this);
297297
}
298298

299299
/**
@@ -309,7 +309,7 @@ private function populatePermissions(): void
309309
/** @var PermissionModel $permissionModel */
310310
$permissionModel = model(PermissionModel::class);
311311

312-
$this->permissionsCache = $permissionModel->getByUserId($this->id);
312+
$this->permissionsCache = $permissionModel->getForUser($this);
313313
}
314314

315315
/**
@@ -345,7 +345,7 @@ private function savePermissions(): void
345345
*/
346346
private function saveGroupsOrPermissions(string $type, $model, array $cache): void
347347
{
348-
$existing = $model->getByUserId($this->id);
348+
$existing = $model->getForUser($this);
349349

350350
$new = array_diff($cache, $existing);
351351

src/Controllers/MagicLinkController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public function loginAction()
6060
$identityModel = model(UserIdentityModel::class);
6161

6262
// Delete any previous magic-link identities
63-
$identityModel->deleteIdentitiesByType($user->getAuthId(), 'magic-link');
63+
$identityModel->deleteIdentitiesByType($user, 'magic-link');
6464

6565
// Generate the code and save it as an identity
6666
helper('text');

src/Entities/User.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ private function populateIdentities(): void
6363
/** @var UserIdentityModel $identityModel */
6464
$identityModel = model(UserIdentityModel::class);
6565

66-
$this->identities = $identityModel->getIdentities($this->id);
66+
$this->identities = $identityModel->getIdentities($this);
6767
}
6868
}
6969

src/Models/GroupModel.php

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

55
use CodeIgniter\Model;
6+
use CodeIgniter\Shield\Entities\User;
67

78
class GroupModel extends Model
89
{
@@ -20,18 +21,15 @@ class GroupModel extends Model
2021
protected $validationMessages = [];
2122
protected $skipValidation = false;
2223

23-
/**
24-
* @param int|string $userId
25-
*/
26-
public function getByUserId($userId): array
24+
public function getForUser(User $user): array
2725
{
28-
$groups = $this->builder()
26+
$rows = $this->builder()
2927
->select('group')
30-
->where('user_id', $userId)
28+
->where('user_id', $user->getAuthId())
3129
->get()
3230
->getResultArray();
3331

34-
return array_column($groups, 'group');
32+
return array_column($rows, 'group');
3533
}
3634

3735
/**

src/Models/PermissionModel.php

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

55
use CodeIgniter\Model;
6+
use CodeIgniter\Shield\Entities\User;
67

78
class PermissionModel extends Model
89
{
@@ -20,18 +21,15 @@ class PermissionModel extends Model
2021
protected $validationMessages = [];
2122
protected $skipValidation = false;
2223

23-
/**
24-
* @param int|string $userId
25-
*/
26-
public function getByUserId($userId): array
24+
public function getForUser(User $user): array
2725
{
28-
$permission = $this->builder()
26+
$rows = $this->builder()
2927
->select('permission')
30-
->where('user_id', $userId)
28+
->where('user_id', $user->getAuthId())
3129
->get()
3230
->getResultArray();
3331

34-
return array_column($permission, 'permission');
32+
return array_column($rows, 'permission');
3533
}
3634

3735
/**

src/Models/RememberModel.php

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

55
use CodeIgniter\Model;
6+
use CodeIgniter\Shield\Entities\User;
67
use CodeIgniter\Shield\Exceptions\RuntimeException;
78
use DateTime;
89
use stdClass;
@@ -23,15 +24,13 @@ class RememberModel extends Model
2324

2425
/**
2526
* Stores a remember-me token for the user.
26-
*
27-
* @param int|string $userId
2827
*/
29-
public function rememberUser($userId, string $selector, string $hashedValidator, string $expires): void
28+
public function rememberUser(User $user, string $selector, string $hashedValidator, string $expires): void
3029
{
3130
$expires = new DateTime($expires);
3231

3332
$return = $this->insert([
34-
'user_id' => $userId,
33+
'user_id' => $user->getAuthId(),
3534
'selector' => $selector,
3635
'hashedValidator' => $hashedValidator,
3736
'expires' => $expires->format('Y-m-d H:i:s'),
@@ -76,12 +75,10 @@ public function updateRememberValidator(stdClass $token): void
7675
/**
7776
* Removes all persistent login tokens (remember-me) for a single user
7877
* across all devices they may have logged in with.
79-
*
80-
* @param int|string $userId
8178
*/
82-
public function purgeRememberTokens($userId): void
79+
public function purgeRememberTokens(User $user): void
8380
{
84-
$return = $this->where(['user_id' => $userId])->delete();
81+
$return = $this->where(['user_id' => $user->getAuthId()])->delete();
8582

8683
$this->checkQueryReturn($return);
8784
}

0 commit comments

Comments
 (0)