![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-two-factor-auth/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\TwoFactorAuth\Model; use Magento\TwoFactorAuth\Api\UserConfigManagerInterface; use Magento\TwoFactorAuth\Model\ResourceModel\UserConfig as UserConfigResource; /** * @inheritDoc */ class UserConfigManager implements UserConfigManagerInterface { /** * @var array */ private $configurationRegistry = []; /** * @var UserConfigFactory */ private $userConfigFactory; /** * @var UserConfigResource */ private $userConfigResource; /** * @param UserConfigFactory $userConfigFactory * @param UserConfigResource|null $userConfigResource * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function __construct( UserConfigFactory $userConfigFactory, UserConfigResource $userConfigResource ) { $this->userConfigFactory = $userConfigFactory; $this->userConfigResource = $userConfigResource; } /** * @inheritDoc */ public function getProviderConfig(int $userId, string $providerCode): ?array { $userConfig = $this->getUserConfiguration($userId); $providersConfig = $userConfig->getData('config'); if (!isset($providersConfig[$providerCode])) { return null; } return $providersConfig[$providerCode]; } /** * @inheritdoc */ public function setProviderConfig(int $userId, string $providerCode, ?array $config = null): bool { $userConfig = $this->getUserConfiguration($userId); $providersConfig = $userConfig->getData('config'); if ($config === null) { if (isset($providersConfig[$providerCode])) { unset($providersConfig[$providerCode]); } } else { $providersConfig[$providerCode] = $config; } $userConfig->setData('config', $providersConfig); $this->userConfigResource->save($userConfig); return true; } /** * @inheritdoc */ public function addProviderConfig(int $userId, string $providerCode, ?array $config = null): bool { $userConfig = $this->getProviderConfig($userId, $providerCode); if ($userConfig === null) { $newConfig = $config; } else { $newConfig = array_merge($userConfig, $config); } return $this->setProviderConfig($userId, $providerCode, $newConfig); } /** * @inheritdoc */ public function resetProviderConfig(int $userId, string $providerCode): bool { $this->setProviderConfig($userId, $providerCode, null); return true; } /** * Get user TFA config * * @param int $userId * @return UserConfig */ private function getUserConfiguration(int $userId): UserConfig { if (!isset($this->configurationRegistry[$userId])) { /** @var $userConfig UserConfig */ $userConfig = $this->userConfigFactory->create(); $this->userConfigResource->load($userConfig, $userId, 'user_id'); $userConfig->setData('user_id', $userId); $this->configurationRegistry[$userId] = $userConfig; } return $this->configurationRegistry[$userId]; } /** * @inheritdoc */ public function setProvidersCodes(int $userId, $providersCodes): bool { if (is_string($providersCodes)) { $providersCodes = preg_split('/\s*,\s*/', $providersCodes); } $userConfig = $this->getUserConfiguration($userId); $userConfig->setData('providers', $providersCodes); $this->userConfigResource->save($userConfig); return true; } /** * @inheritdoc */ public function getProvidersCodes(int $userId): array { $userConfig = $this->getUserConfiguration($userId); return $userConfig->getData('providers'); } /** * @inheritdoc */ public function activateProviderConfiguration(int $userId, string $providerCode): bool { return $this->addProviderConfig($userId, $providerCode, [ UserConfigManagerInterface::ACTIVE_CONFIG_KEY => true ]); } /** * @inheritdoc */ public function isProviderConfigurationActive(int $userId, string $providerCode): bool { $config = $this->getProviderConfig($userId, $providerCode); return $config && isset($config[UserConfigManagerInterface::ACTIVE_CONFIG_KEY]) && $config[UserConfigManagerInterface::ACTIVE_CONFIG_KEY]; } /** * @inheritdoc */ public function setDefaultProvider(int $userId, string $providerCode): bool { $userConfig = $this->getUserConfiguration($userId); $userConfig->setData('default_provider', $providerCode); $this->userConfigResource->save($userConfig); return true; } /** * @inheritdoc */ public function getDefaultProvider(int $userId): string { $userConfig = $this->getUserConfiguration($userId); return $userConfig->getData('default_provider') ?: ''; } }