From 70e81cc8b9ffaa3a8981c3ccb95662b687c2acbb Mon Sep 17 00:00:00 2001 From: Pooya Parsa Dadashi Date: Sun, 12 Jun 2022 20:17:14 +0330 Subject: [PATCH 1/9] fix: datetime for defaultLocale set fa --- src/Authentication/Authenticators/AccessTokens.php | 2 +- src/Authorization/Traits/Authorizable.php | 2 +- src/Controllers/MagicLinkController.php | 2 +- src/Models/LoginModel.php | 2 +- src/Models/TokenLoginModel.php | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Authentication/Authenticators/AccessTokens.php b/src/Authentication/Authenticators/AccessTokens.php index 98ce6b0f0..1c6884475 100644 --- a/src/Authentication/Authenticators/AccessTokens.php +++ b/src/Authentication/Authenticators/AccessTokens.php @@ -124,7 +124,7 @@ public function check(array $credentials): Result ]); } - $token->last_used_at = Time::now()->toDateTimeString(); + $token->last_used_at = Time::now()->format('Y-m-d H:i:s'); $identityModel->save($token); // Ensure the token is set as the current token diff --git a/src/Authorization/Traits/Authorizable.php b/src/Authorization/Traits/Authorizable.php index b239a449b..3a1f8fba9 100644 --- a/src/Authorization/Traits/Authorizable.php +++ b/src/Authorization/Traits/Authorizable.php @@ -367,7 +367,7 @@ private function saveGroupsOrPermissions(string $type, $model, array $cache): vo $inserts[] = [ 'user_id' => $this->id, $type => $item, - 'created_at' => Time::now()->toDateTimeString(), + 'created_at' => Time::now()->format('Y-m-d H:i:s'), ]; } diff --git a/src/Controllers/MagicLinkController.php b/src/Controllers/MagicLinkController.php index 0dedeee7d..e06f6f44b 100644 --- a/src/Controllers/MagicLinkController.php +++ b/src/Controllers/MagicLinkController.php @@ -78,7 +78,7 @@ public function loginAction() 'user_id' => $user->id, 'type' => Session::ID_TYPE_MAGIC_LINK, 'secret' => $token, - 'expires' => Time::now()->addSeconds(setting('Auth.magicLinkLifetime'))->toDateTimeString(), + 'expires' => Time::now()->addSeconds(setting('Auth.magicLinkLifetime'))->format('Y-m-d H:i:s'), ]); // Send the user an email with the code diff --git a/src/Models/LoginModel.php b/src/Models/LoginModel.php index 654f5d428..fbaf8b113 100644 --- a/src/Models/LoginModel.php +++ b/src/Models/LoginModel.php @@ -91,7 +91,7 @@ public function fake(Generator &$faker): Login 'id_type' => Session::ID_TYPE_EMAIL_PASSWORD, 'identifier' => $faker->email, 'user_id' => null, - 'date' => Time::parse('-1 day')->toDateTimeString(), + 'date' => Time::parse('-1 day')->format('Y-m-d H:i:s'), 'success' => true, ]); } diff --git a/src/Models/TokenLoginModel.php b/src/Models/TokenLoginModel.php index 59f159bcf..fcb8dee25 100644 --- a/src/Models/TokenLoginModel.php +++ b/src/Models/TokenLoginModel.php @@ -22,7 +22,7 @@ public function fake(Generator &$faker): Login 'ip_address' => $faker->ipv4, 'identifier' => 'token: ' . random_string('crypto', 64), 'user_id' => fake(UserModel::class)->id, - 'date' => Time::parse('-1 day')->toDateTimeString(), + 'date' => Time::parse('-1 day')->format('Y-m-d H:i:s'), 'success' => true, ]); } From 77981d9160a2a7fcb9405061e55af15fe6096ff2 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Dadashi Date: Mon, 13 Jun 2022 10:33:49 +0330 Subject: [PATCH 2/9] test: add test if default locale set `fa` --- tests/Authorization/AuthorizableTest.php | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/Authorization/AuthorizableTest.php b/tests/Authorization/AuthorizableTest.php index 34ed87a63..b2c35915a 100644 --- a/tests/Authorization/AuthorizableTest.php +++ b/tests/Authorization/AuthorizableTest.php @@ -6,6 +6,7 @@ use CodeIgniter\Shield\Authorization\AuthorizationException; use CodeIgniter\Shield\Models\UserModel; use CodeIgniter\Test\DatabaseTestTrait; +use Locale; use Tests\Support\FakeUser; use Tests\Support\TestCase; @@ -295,4 +296,24 @@ public function testCanCascadesToGroupsWithWildcards(): void $this->assertTrue($this->user->can('admin.access')); } + + // see https://github.com/codeigniter4/shield/pull/238 + public function testCreatedAtIfDefaultLocaleSetFaWithAddGroup(): void + { + locale::setDefault('fa'); + + $this->hasInDatabase('auth_groups_users', [ + 'user_id' => $this->user->id, + 'group' => 'admin', + 'created_at' => Time::now()->format('Y-m-d H:i:s'), + ]); + + $this->user->addGroup('admin'); + + $this->dontSeeInDatabase('auth_groups_users', [ + 'user_id' => $this->user->id, + 'group' => 'admin', + 'created_at' => '0000-00-00 00:00:00', + ]); + } } From f4e567a00d5f697ec72f737b9b734c12483ab075 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Dadashi Date: Mon, 13 Jun 2022 13:06:08 +0430 Subject: [PATCH 3/9] update PHPDoc Co-authored-by: kenjis --- tests/Authorization/AuthorizableTest.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/Authorization/AuthorizableTest.php b/tests/Authorization/AuthorizableTest.php index b2c35915a..b54f0b916 100644 --- a/tests/Authorization/AuthorizableTest.php +++ b/tests/Authorization/AuthorizableTest.php @@ -297,7 +297,9 @@ public function testCanCascadesToGroupsWithWildcards(): void $this->assertTrue($this->user->can('admin.access')); } - // see https://github.com/codeigniter4/shield/pull/238 + /** + * @see https://github.com/codeigniter4/shield/pull/238 + */ public function testCreatedAtIfDefaultLocaleSetFaWithAddGroup(): void { locale::setDefault('fa'); From 2bd77651c6e397a59f27794a1baeb25c12775ebd Mon Sep 17 00:00:00 2001 From: Pooya Parsa Dadashi Date: Mon, 13 Jun 2022 13:09:16 +0430 Subject: [PATCH 4/9] Update tests/Authorization/AuthorizableTest.php Co-authored-by: kenjis --- tests/Authorization/AuthorizableTest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/Authorization/AuthorizableTest.php b/tests/Authorization/AuthorizableTest.php index b54f0b916..f7e9fb021 100644 --- a/tests/Authorization/AuthorizableTest.php +++ b/tests/Authorization/AuthorizableTest.php @@ -302,7 +302,8 @@ public function testCanCascadesToGroupsWithWildcards(): void */ public function testCreatedAtIfDefaultLocaleSetFaWithAddGroup(): void { - locale::setDefault('fa'); + $currentLocale = Locale::getDefault(); + Locale::setDefault('fa'); $this->hasInDatabase('auth_groups_users', [ 'user_id' => $this->user->id, From 7c1138e909776c41a7bb8088041a18a9fdffa32b Mon Sep 17 00:00:00 2001 From: Pooya Parsa Dadashi Date: Mon, 13 Jun 2022 13:12:36 +0430 Subject: [PATCH 5/9] Update AuthorizableTest.php --- tests/Authorization/AuthorizableTest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/Authorization/AuthorizableTest.php b/tests/Authorization/AuthorizableTest.php index f7e9fb021..51661ec12 100644 --- a/tests/Authorization/AuthorizableTest.php +++ b/tests/Authorization/AuthorizableTest.php @@ -318,5 +318,6 @@ public function testCreatedAtIfDefaultLocaleSetFaWithAddGroup(): void 'group' => 'admin', 'created_at' => '0000-00-00 00:00:00', ]); + Locale::setDefault($currentLocale); } } From 79d3e3e5e461f88ac3871844e25ca858dfab44c4 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Dadashi Date: Thu, 16 Jun 2022 11:41:40 +0430 Subject: [PATCH 6/9] test: Edit test according to CI version --- tests/Authorization/AuthorizableTest.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/tests/Authorization/AuthorizableTest.php b/tests/Authorization/AuthorizableTest.php index 51661ec12..11292f52e 100644 --- a/tests/Authorization/AuthorizableTest.php +++ b/tests/Authorization/AuthorizableTest.php @@ -2,6 +2,7 @@ namespace Tests\Authorization; +use CodeIgniter\CodeIgniter; use CodeIgniter\I18n\Time; use CodeIgniter\Shield\Authorization\AuthorizationException; use CodeIgniter\Shield\Models\UserModel; @@ -302,22 +303,23 @@ public function testCanCascadesToGroupsWithWildcards(): void */ public function testCreatedAtIfDefaultLocaleSetFaWithAddGroup(): void { + if (version_compare(CodeIgniter::CI_VERSION, '4.2.1', '<')) { + $this->markTestSkipped('This test does not work on CI v4.2.0 or before due to a bug.'); + } + $currentLocale = Locale::getDefault(); Locale::setDefault('fa'); - $this->hasInDatabase('auth_groups_users', [ - 'user_id' => $this->user->id, - 'group' => 'admin', - 'created_at' => Time::now()->format('Y-m-d H:i:s'), - ]); + Time::setTestNow('March 10, 2017', 'America/Chicago'); $this->user->addGroup('admin'); - $this->dontSeeInDatabase('auth_groups_users', [ + $this->seeInDatabase('auth_groups_users', [ 'user_id' => $this->user->id, 'group' => 'admin', - 'created_at' => '0000-00-00 00:00:00', + 'created_at' => '2017-03-10 00:00:00', ]); + Locale::setDefault($currentLocale); } } From 1b0e64310c01799f664ede34d168d934c0b774c5 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Dadashi Date: Thu, 16 Jun 2022 15:12:02 +0430 Subject: [PATCH 7/9] Update tests/Authorization/AuthorizableTest.php Co-authored-by: MGatner --- tests/Authorization/AuthorizableTest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/Authorization/AuthorizableTest.php b/tests/Authorization/AuthorizableTest.php index 11292f52e..3667f7c6e 100644 --- a/tests/Authorization/AuthorizableTest.php +++ b/tests/Authorization/AuthorizableTest.php @@ -303,6 +303,7 @@ public function testCanCascadesToGroupsWithWildcards(): void */ public function testCreatedAtIfDefaultLocaleSetFaWithAddGroup(): void { + // @phpstan-ignore-next-line if (version_compare(CodeIgniter::CI_VERSION, '4.2.1', '<')) { $this->markTestSkipped('This test does not work on CI v4.2.0 or before due to a bug.'); } From 2cf38c6d7405671745e3bdd4f9d2dde77a5757e7 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Dadashi Date: Tue, 28 Jun 2022 23:14:25 +0430 Subject: [PATCH 8/9] Update tests/Authorization/AuthorizableTest.php Co-authored-by: kenjis --- tests/Authorization/AuthorizableTest.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/tests/Authorization/AuthorizableTest.php b/tests/Authorization/AuthorizableTest.php index 3667f7c6e..88c5f68cc 100644 --- a/tests/Authorization/AuthorizableTest.php +++ b/tests/Authorization/AuthorizableTest.php @@ -303,11 +303,6 @@ public function testCanCascadesToGroupsWithWildcards(): void */ public function testCreatedAtIfDefaultLocaleSetFaWithAddGroup(): void { - // @phpstan-ignore-next-line - if (version_compare(CodeIgniter::CI_VERSION, '4.2.1', '<')) { - $this->markTestSkipped('This test does not work on CI v4.2.0 or before due to a bug.'); - } - $currentLocale = Locale::getDefault(); Locale::setDefault('fa'); From e929fc8101003d06400d5a362b679cf69b1f46cd Mon Sep 17 00:00:00 2001 From: Pooya Parsa Dadashi Date: Tue, 28 Jun 2022 23:16:46 +0430 Subject: [PATCH 9/9] Update AuthorizableTest.php --- tests/Authorization/AuthorizableTest.php | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/Authorization/AuthorizableTest.php b/tests/Authorization/AuthorizableTest.php index 88c5f68cc..4a3ea3daa 100644 --- a/tests/Authorization/AuthorizableTest.php +++ b/tests/Authorization/AuthorizableTest.php @@ -2,7 +2,6 @@ namespace Tests\Authorization; -use CodeIgniter\CodeIgniter; use CodeIgniter\I18n\Time; use CodeIgniter\Shield\Authorization\AuthorizationException; use CodeIgniter\Shield\Models\UserModel;