| <?php |
|
|
| |
| |
| |
| |
| |
| |
|
|
| namespace Piwik\Plugin; |
|
|
| use Piwik\Container\StaticContainer; |
| use Piwik\Piwik; |
| use Piwik\Plugins\Login\PasswordVerifier; |
| use Piwik\Log\LoggerInterface; |
| use Exception; |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| abstract class API |
| { |
| private static $instances; |
|
|
| |
| protected $autoSanitizeInputParams = true; |
|
|
| |
| |
| |
| |
| |
| |
| public static function getInstance() |
| { |
| $class = get_called_class(); |
|
|
| if (!isset(self::$instances[$class])) { |
| $container = StaticContainer::getContainer(); |
|
|
| $refl = new \ReflectionClass($class); |
|
|
| if (!$refl->getConstructor() || $refl->getConstructor()->isPublic()) { |
| self::$instances[$class] = $container->get($class); |
| } else { |
| |
| $logger = $container->get(LoggerInterface::class); |
|
|
| |
| $logger->notice('The API class {class} defines a protected constructor which is deprecated, make the constructor public instead', ['class' => $class]); |
| self::$instances[$class] = new $class(); |
| } |
| } |
|
|
| return self::$instances[$class]; |
| } |
|
|
| |
| |
| |
| |
| |
| public static function unsetInstance() |
| { |
| $class = get_called_class(); |
| unset(self::$instances[$class]); |
| } |
|
|
| |
| |
| |
| |
| |
| public static function unsetAllInstances() |
| { |
| self::$instances = []; |
| } |
|
|
| |
| |
| |
| |
| |
| public static function setSingletonInstance($instance) |
| { |
| $class = get_called_class(); |
| self::$instances[$class] = $instance; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| protected function confirmCurrentUserPassword( |
| #[\SensitiveParameter] |
| $passwordConfirmation |
| ) { |
| $loginCurrentUser = Piwik::getCurrentUserLogin(); |
|
|
| if (!Piwik::doesUserRequirePasswordConfirmation($loginCurrentUser)) { |
| return; |
| } |
|
|
| if (empty($passwordConfirmation)) { |
| throw new Exception(Piwik::translate('UsersManager_ConfirmWithReAuthentication')); |
| } |
|
|
| try { |
| if ( |
| !StaticContainer::get(PasswordVerifier::class)->isPasswordCorrect( |
| $loginCurrentUser, |
| $passwordConfirmation |
| ) |
| ) { |
| throw new Exception(Piwik::translate('UsersManager_CurrentPasswordNotCorrect')); |
| } |
| } catch (Exception $e) { |
| |
| throw new Exception(Piwik::translate('UsersManager_CurrentPasswordNotCorrect')); |
| } |
| } |
|
|
| |
| |
| |
| |
| public function usesAutoSanitizeInputParams() |
| { |
| return $this->autoSanitizeInputParams; |
| } |
| } |
|
|