From f24a643f03c3e5d6d4a93fef54b97be1c570a16d Mon Sep 17 00:00:00 2001 From: joshuaruesweg Date: Sun, 22 Nov 2020 11:37:45 +0100 Subject: [PATCH] Add usesMultifactor condition for notices --- com.woltlab.wcf/objectType.xml | 7 ++ .../UserMultifactorCondition.class.php | 111 ++++++++++++++++++ wcfsetup/install/lang/de.xml | 4 + wcfsetup/install/lang/en.xml | 4 + 4 files changed, 126 insertions(+) create mode 100644 wcfsetup/install/files/lib/system/condition/UserMultifactorCondition.class.php diff --git a/com.woltlab.wcf/objectType.xml b/com.woltlab.wcf/objectType.xml index 4e7f955338..0a015a876e 100644 --- a/com.woltlab.wcf/objectType.xml +++ b/com.woltlab.wcf/objectType.xml @@ -943,6 +943,13 @@ trophyPoints 0 + + com.woltlab.wcf.user.multifactor + com.woltlab.wcf.condition.notice + wcf\system\condition\UserMultifactorCondition + com.woltlab.wcf.user + general + diff --git a/wcfsetup/install/files/lib/system/condition/UserMultifactorCondition.class.php b/wcfsetup/install/files/lib/system/condition/UserMultifactorCondition.class.php new file mode 100644 index 0000000000..cfec88c676 --- /dev/null +++ b/wcfsetup/install/files/lib/system/condition/UserMultifactorCondition.class.php @@ -0,0 +1,111 @@ + + * @package WoltLabSuite\Core\System\Condition + * @since 5.4 + */ +class UserMultifactorCondition extends AbstractSingleFieldCondition implements IContentCondition { + /** + * @inheritDoc + */ + protected $label = 'wcf.user.condition.multifactor'; + + /** + * 1 if uses multifactor checkbox is checked + * @var integer + */ + protected $usesMultifactor = 0; + + /** + * 1 if uses no multifactor checkbox is checked + * @var integer + */ + protected $usesNoMultifactor = 0; + + /** + * @inheritDoc + */ + public function getData() { + if ($this->usesMultifactor || $this->usesNoMultifactor) { + return [ + // if usesNoMultifactor is selected usesMultifactor is 0 + // otherwise usesNoMultifactor is 1 + 'usesMultifactor' => $this->usesMultifactor + ]; + } + + return null; + } + + /** + * @inheritDoc + */ + public function getFieldElement() { + $usesMultifactorLabel = WCF::getLanguage()->get('wcf.user.condition.multifactor.usesMultifactor'); + $usesNoMultifactorLabel = WCF::getLanguage()->get('wcf.user.condition.multifactor.usesNoMultifactor'); + $usesMultifactorChecked = ''; + if ($this->usesMultifactor) { + $usesMultifactorChecked = ' checked'; + } + + $usesNoMultifactorChecked = ''; + if ($this->usesNoMultifactor) { + $usesNoMultifactorChecked = ' checked'; + } + + return << {$usesMultifactorLabel} + +HTML; + } + + /** + * @inheritDoc + */ + public function readFormParameters() { + if (isset($_POST['usesMultifactor'])) $this->usesMultifactor = 1; + if (isset($_POST['usesNoMultifactor'])) $this->usesNoMultifactor = 1; + } + + /** + * @inheritDoc + */ + public function reset() { + $this->usesMultifactor = $this->usesNoMultifactor = 0; + } + + /** + * @inheritDoc + */ + public function setData(Condition $condition) { + $this->usesMultifactor = $condition->usesMultifactor; + $this->usesNoMultifactor = !$condition->usesMultifactor; + } + + /** + * @inheritDoc + */ + public function validate() { + if ($this->usesMultifactor && $this->usesNoMultifactor) { + $this->errorMessage = 'wcf.user.condition.multifactor.usesMultifactor.error.conflict'; + + throw new UserInputException('usesMultifactor', 'conflict'); + } + } + + /** + * @inheritDoc + */ + public function showContent(Condition $condition) { + return (($condition->usesMultifactor && WCF::getUser()->multifactorActive) || (!$condition->usesMultifactor && !WCF::getUser()->multifactorActive)); + } +} diff --git a/wcfsetup/install/lang/de.xml b/wcfsetup/install/lang/de.xml index 994acdc89d..37691187bf 100644 --- a/wcfsetup/install/lang/de.xml +++ b/wcfsetup/install/lang/de.xml @@ -5092,6 +5092,10 @@ Die E-Mail-Adresse des neuen Benutzers lautet: {@$user->email} + + + + diff --git a/wcfsetup/install/lang/en.xml b/wcfsetup/install/lang/en.xml index f440faba8f..a5b8339702 100644 --- a/wcfsetup/install/lang/en.xml +++ b/wcfsetup/install/lang/en.xml @@ -5089,6 +5089,10 @@ Open the link below to access the user profile: + + + + -- 2.20.1