From ea0f25d4c0e57f334342e12a840f74e586d5f242 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Mon, 2 Oct 2023 13:59:16 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BA=8C=E6=AE=B5=E9=9A=8E=E8=AA=8D?= =?UTF-8?q?=E8=A8=BC=E3=81=AEE2E=E3=83=86=E3=82=B9=E3=83=88=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/e2e-test-throttling.yml | 2 +- codeception/acceptance/EF09ThrottlingCest.php | 60 +++++++++++++++++++ 2 files changed, 61 insertions(+), 1 deletion(-) diff --git a/.github/workflows/e2e-test-throttling.yml b/.github/workflows/e2e-test-throttling.yml index bff054e4cda..6135c1a7f0b 100644 --- a/.github/workflows/e2e-test-throttling.yml +++ b/.github/workflows/e2e-test-throttling.yml @@ -21,7 +21,7 @@ jobs: matrix: php: [ 8.1 ] db: [ pgsql ] - method: [ フロント画面ログイン_IP, フロント画面ログイン_会員, 管理画面ログイン_IP, 管理画面ログイン_会員, 会員登録, 問い合わせ, パスワード再発行, 注文確認_非会員購入, 注文確認_会員購入, 注文完了_非会員購入, 注文完了_会員購入, 会員情報編集, 配送先情報_追加, 配送先情報_編集, 配送先情報_削除, order_お届け先追加, order_お届け先変更, 新規会員登録_入力 ] + method: [ フロント画面ログイン_IP, フロント画面ログイン_会員, 管理画面ログイン_IP, 管理画面ログイン_会員, 会員登録, 問い合わせ, パスワード再発行, 注文確認_非会員購入, 注文確認_会員購入, 注文完了_非会員購入, 注文完了_会員購入, 会員情報編集, 配送先情報_追加, 配送先情報_編集, 配送先情報_削除, order_お届け先追加, order_お届け先変更, 新規会員登録_入力, 管理画面二段階認証 ] include: - db: pgsql database_url: postgres://postgres:password@127.0.0.1:5432/eccube_db diff --git a/codeception/acceptance/EF09ThrottlingCest.php b/codeception/acceptance/EF09ThrottlingCest.php index 85bd15cc4f8..294d29b1cd8 100644 --- a/codeception/acceptance/EF09ThrottlingCest.php +++ b/codeception/acceptance/EF09ThrottlingCest.php @@ -772,4 +772,64 @@ public function 新規会員登録_入力(AcceptanceTester $I) $I->see('試行回数の上限を超過しました。しばらくお待ちいただき、再度お試しください。', 'p.ec-reportDescription'); } + public function 管理画面二段階認証($I) + { + $I->loginAsAdmin(); + + // 二段階認証を有効にしてメンバーを新規作成 + $config = Fixtures::get('config'); + $I->amOnPage('/'.$config['eccube_admin_route'].'/setting/system/member/new'); + $I->see('メンバー登録システム設定', '.c-pageTitle'); + + $login_id = 'admin_'.\Eccube\Util\StringUtil::random(6); + $password = 'password1234'; + $I->fillField(['id' => 'admin_member_name'], '管理者'); + $I->fillField(['id' => 'admin_member_department'], 'admin_throttling'); + $I->fillField(['id' => 'admin_member_login_id'], $login_id); + $I->fillField(['id' => 'admin_member_plain_password_first'], $password); + $I->fillField(['id' => 'admin_member_plain_password_second'], $password); + $I->selectOption(['id' => 'admin_member_Authority'], 'システム管理者'); + $I->click("label[for='admin_member_Work_1']"); // 稼働 + $I->click("label[for='admin_member_two_factor_auth_enabled']"); // 有効 + $I->click('#member_form .c-conversionArea__container button'); + $I->see('保存しました', '.c-contentsArea .alert-success'); + + $I->logoutAsAdmin(); + + // 作成したメンバーでログイン + $I->submitForm('#form1', [ + 'login_id' => $login_id, + 'password' => $password, + ]); + + // 二段階認証のセットアップ + $secret = $I->executeJS('return $("#admin_two_factor_auth_auth_key").val();'); + $tfa = new \RobThree\Auth\TwoFactorAuth(); + $code = $tfa->getCode($secret); + $I->fillField(['id' => 'admin_two_factor_auth_device_token'], $code); + $I->click('登録'); + $I->see('ホーム', '.c-contentsArea .c-pageTitle > .c-pageTitle__titles'); + + // ログアウトし、二段階認証を試行する + $I->logoutAsAdmin(); + + $I->resetCookie('eccube_2fa'); // 2要素認証のクッキーを削除 + + $I->submitForm('#form1', [ + 'login_id' => $login_id, + 'password' => $password, + ]); + + // トークン入力画面で5回入力 + for ($i = 0; $i < 5; $i++) { + $I->fillField(['id' => 'admin_two_factor_auth_device_token'], 'aaaaa'.$i); + $I->click('認証'); + } + + // トークン入力の試行回数制限を超過 + $I->fillField(['id' => 'admin_two_factor_auth_device_token'], 'aaaaaa'); + $I->click('認証'); + + $I->see('試行回数の上限を超過しました。しばらくお待ちいただき、再度お試しください。', 'p'); + } } From d8ffe25a4864333025d047b1426ca8f2246dba6f Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Tue, 3 Oct 2023 14:42:26 +0900 Subject: [PATCH 2/3] =?UTF-8?q?=E3=82=A8=E3=83=A9=E3=83=BC=E3=83=A1?= =?UTF-8?q?=E3=83=83=E3=82=BB=E3=83=BC=E3=82=B8=E3=81=AE=E5=87=BA=E5=8A=9B?= =?UTF-8?q?=E3=82=92=E7=A2=BA=E8=AA=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- codeception/acceptance/EF09ThrottlingCest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/codeception/acceptance/EF09ThrottlingCest.php b/codeception/acceptance/EF09ThrottlingCest.php index 294d29b1cd8..d26553f2259 100644 --- a/codeception/acceptance/EF09ThrottlingCest.php +++ b/codeception/acceptance/EF09ThrottlingCest.php @@ -824,6 +824,7 @@ public function 管理画面二段階認証($I) for ($i = 0; $i < 5; $i++) { $I->fillField(['id' => 'admin_two_factor_auth_device_token'], 'aaaaa'.$i); $I->click('認証'); + $I->waitForText('トークンに誤りがあります。再度入力してください。'); } // トークン入力の試行回数制限を超過 From 9a176cf4e9b29dcb2bd6e8ba2120303bd2435420 Mon Sep 17 00:00:00 2001 From: Chihiro Adachi <8196725+chihiro-adachi@users.noreply.github.com> Date: Wed, 18 Oct 2023 12:48:48 +0900 Subject: [PATCH 3/3] =?UTF-8?q?=E5=9E=8B=E3=81=AE=E5=AE=9A=E7=BE=A9?= =?UTF-8?q?=E6=BC=8F=E3=82=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- codeception/acceptance/EF09ThrottlingCest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codeception/acceptance/EF09ThrottlingCest.php b/codeception/acceptance/EF09ThrottlingCest.php index d26553f2259..e9254d7bd80 100644 --- a/codeception/acceptance/EF09ThrottlingCest.php +++ b/codeception/acceptance/EF09ThrottlingCest.php @@ -772,7 +772,7 @@ public function 新規会員登録_入力(AcceptanceTester $I) $I->see('試行回数の上限を超過しました。しばらくお待ちいただき、再度お試しください。', 'p.ec-reportDescription'); } - public function 管理画面二段階認証($I) + public function 管理画面二段階認証(AcceptanceTester $I) { $I->loginAsAdmin();