From 40fe9cfee09985b69aa2293d666d56e9f0a03ebf Mon Sep 17 00:00:00 2001 From: Yuriy Bakhtin Date: Tue, 13 Sep 2022 16:13:00 +0300 Subject: [PATCH 1/2] Fix tests with mail sending (#5862) * Fix tests with mail sending * Fix NonceCest because the submit button is overlapped with new large padding-bottom of CodeMirror --- protected/humhub/libs/DynamicConfig.php | 1 + .../modules/web/tests/codeception/acceptance/NonceCest.php | 4 ++-- protected/humhub/tests/codeception/config/dynamic.php | 3 --- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/protected/humhub/libs/DynamicConfig.php b/protected/humhub/libs/DynamicConfig.php index cd9892e419..6875814235 100644 --- a/protected/humhub/libs/DynamicConfig.php +++ b/protected/humhub/libs/DynamicConfig.php @@ -179,6 +179,7 @@ class DynamicConfig extends BaseObject } elseif ($transportType === MailingSettingsForm::TRANSPORT_DSN) { $mail['transport']['dsn'] = Yii::$app->settings->get('mailer.dsn'); } elseif ($transportType === MailingSettingsForm::TRANSPORT_FILE) { + unset($mail['transport']); $mail['useFileTransport'] = true; } diff --git a/protected/humhub/modules/web/tests/codeception/acceptance/NonceCest.php b/protected/humhub/modules/web/tests/codeception/acceptance/NonceCest.php index 0dd4f40844..7d2861cefb 100644 --- a/protected/humhub/modules/web/tests/codeception/acceptance/NonceCest.php +++ b/protected/humhub/modules/web/tests/codeception/acceptance/NonceCest.php @@ -30,7 +30,7 @@ class NonceCest $I->amOnRoute(['/admin/setting/statistic']); $I->wait(2); $I->executeJS('_editor = document.querySelectorAll("div.CodeMirror")[0].CodeMirror; _editor.setValue("");'); - $I->click('Save'); + $I->jsClick('button[type=submit]'); $I->wait(2); $I->see("Tracking Script", '#test_tracking_script'); } @@ -42,7 +42,7 @@ class NonceCest $I->amOnRoute(['/admin/setting/statistic']); $I->wait(2); $I->executeJS('_editor = document.querySelectorAll("div.CodeMirror")[0].CodeMirror; _editor.setValue("");'); - $I->click('Save'); + $I->jsClick('button[type=submit]'); $I->wait(2); $I->amOnDashboard(); $I->dontSee("Tracking Script"); diff --git a/protected/humhub/tests/codeception/config/dynamic.php b/protected/humhub/tests/codeception/config/dynamic.php index 5b6b6491b8..329df8b1eb 100644 --- a/protected/humhub/tests/codeception/config/dynamic.php +++ b/protected/humhub/tests/codeception/config/dynamic.php @@ -13,9 +13,6 @@ ], 'mailer' => [ - 'transport' => - [ - ], 'useFileTransport' => true, ], 'cache' => From 4309b4b4eda1e7683ef1342960f7aed7254f50b3 Mon Sep 17 00:00:00 2001 From: Yuriy Bakhtin Date: Fri, 16 Sep 2022 16:35:20 +0300 Subject: [PATCH 2/2] Don't validate user language on approve (#5865) * Don't validate user language on approve * Fix tests with base URL checking * Revert "Fix tests with base URL checking" This reverts commit ef9141643ad3ee71dcda570d6513b0bcb849a9be. * Check for allowed language on registration and account updating --- CHANGELOG.md | 1 + protected/humhub/components/i18n/I18N.php | 20 +++++++++++++++++++ .../admin/models/forms/ApproveUserForm.php | 9 ++------- .../user/controllers/AccountController.php | 5 +---- protected/humhub/modules/user/models/User.php | 3 ++- .../user/models/forms/Registration.php | 2 +- 6 files changed, 27 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b6bcd9d30..b4f8e91afb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ HumHub Changelog ------------------- - Fix #5851: Admin User Settings cannot saved - Fix #5856: Fix SMTPS Config Migration +- Fix #5854: Don't validate user language on approve 1.12.1 (August 15, 2022) diff --git a/protected/humhub/components/i18n/I18N.php b/protected/humhub/components/i18n/I18N.php index 5007ec260b..4eb96db73c 100644 --- a/protected/humhub/components/i18n/I18N.php +++ b/protected/humhub/components/i18n/I18N.php @@ -192,6 +192,26 @@ class I18N extends BaseI18N return $availableLanguages; } + /** + * Check if the provided or browser language is allowed in system, otherwise return default language + * + * @since 1.12.2 + * @param string|null $language NULL - to get a language from browser + * @return string|null + */ + public function getAllowedLanguage(?string $language = null): ?string + { + if (empty($language)) { + $language = Yii::$app->language; + } + + if (array_key_exists($language, $this->getAllowedLanguages())) { + return $language; + } + + return Yii::$app->settings->get('defaultLanguage'); + } + /** * @inheritdoc */ diff --git a/protected/humhub/modules/admin/models/forms/ApproveUserForm.php b/protected/humhub/modules/admin/models/forms/ApproveUserForm.php index 51a9fd9b2d..05825297ac 100644 --- a/protected/humhub/modules/admin/models/forms/ApproveUserForm.php +++ b/protected/humhub/modules/admin/models/forms/ApproveUserForm.php @@ -157,14 +157,9 @@ class ApproveUserForm extends \yii\base\Model } $this->user->status = User::STATUS_ENABLED; + $this->user->setScenario(User::SCENARIO_APPROVE); - if ($this->validate() && - $this->user->save() && - $this->send()) { - return true; - } - - return false; + return $this->user->save() && $this->send(); } /** diff --git a/protected/humhub/modules/user/controllers/AccountController.php b/protected/humhub/modules/user/controllers/AccountController.php index a6d1baf239..95e031511a 100644 --- a/protected/humhub/modules/user/controllers/AccountController.php +++ b/protected/humhub/modules/user/controllers/AccountController.php @@ -118,10 +118,7 @@ class AccountController extends BaseAccountController $user = Yii::$app->user->getIdentity(); $model = new \humhub\modules\user\models\forms\AccountSettings(); - $model->language = $user->language; - if ($model->language == "") { - $model->language = Yii::$app->settings->get('defaultLanguage'); - } + $model->language = Yii::$app->i18n->getAllowedLanguage($user->language); $model->timeZone = $user->time_zone; if (empty($model->timeZone)) { $model->timeZone = Yii::$app->settings->get('defaultTimeZone'); diff --git a/protected/humhub/modules/user/models/User.php b/protected/humhub/modules/user/models/User.php index 7304b5d252..04c2f2a535 100644 --- a/protected/humhub/modules/user/models/User.php +++ b/protected/humhub/modules/user/models/User.php @@ -99,6 +99,7 @@ class User extends ContentContainerActiveRecord implements IdentityInterface, Se const SCENARIO_REGISTRATION = 'registration'; const SCENARIO_REGISTRATION_EMAIL = 'registration_email'; const SCENARIO_EDIT_ACCOUNT_SETTINGS = 'editAccountSettings'; + const SCENARIO_APPROVE = 'approve'; /** * @event Event an event that is triggered when the user visibility is checked via [[isVisible()]]. @@ -165,7 +166,7 @@ class User extends ContentContainerActiveRecord implements IdentityInterface, Se [['time_zone'], 'validateTimeZone'], [['auth_mode'], 'string', 'max' => 10], [['language'], 'string', 'max' => 5], - ['language', 'in', 'range' => array_keys(Yii::$app->i18n->getAllowedLanguages())], + ['language', 'in', 'range' => array_keys(Yii::$app->i18n->getAllowedLanguages()), 'except' => self::SCENARIO_APPROVE], [['email'], 'unique'], [['email'], 'email'], [['email'], 'string', 'max' => 150], diff --git a/protected/humhub/modules/user/models/forms/Registration.php b/protected/humhub/modules/user/models/forms/Registration.php index 421f37a0b7..51e5531e7c 100644 --- a/protected/humhub/modules/user/models/forms/Registration.php +++ b/protected/humhub/modules/user/models/forms/Registration.php @@ -261,7 +261,7 @@ class Registration extends HForm return false; } - $this->models['User']->language = Yii::$app->language; + $this->models['User']->language = Yii::$app->i18n->getAllowedLanguage(); if ($this->enableUserApproval) { $this->models['User']->status = User::STATUS_NEED_APPROVAL; $this->models['User']->registrationGroupId = $this->models['GroupUser']->group_id;