aboutsummaryrefslogtreecommitdiff
path: root/srcs/phpmyadmin/libraries/classes/Plugins/TwoFactorPlugin.php
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-01-09 10:55:03 +0100
committerCharles <sircharlesaze@gmail.com>2020-01-09 13:09:38 +0100
commit04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa (patch)
tree5c691241355c943a3c68ddb06b8cf8c60aa11319 /srcs/phpmyadmin/libraries/classes/Plugins/TwoFactorPlugin.php
parent7e0d85db834d6351ed85d01e5126ac31dc510b86 (diff)
downloadft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.gz
ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.bz2
ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.zip
phpmyadmin working
Diffstat (limited to 'srcs/phpmyadmin/libraries/classes/Plugins/TwoFactorPlugin.php')
-rw-r--r--srcs/phpmyadmin/libraries/classes/Plugins/TwoFactorPlugin.php183
1 files changed, 183 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/libraries/classes/Plugins/TwoFactorPlugin.php b/srcs/phpmyadmin/libraries/classes/Plugins/TwoFactorPlugin.php
new file mode 100644
index 0000000..23534a1
--- /dev/null
+++ b/srcs/phpmyadmin/libraries/classes/Plugins/TwoFactorPlugin.php
@@ -0,0 +1,183 @@
+<?php
+/* vim: set expandtab sw=4 ts=4 sts=4: */
+/**
+ * Two authentication factor handling
+ *
+ * @package PhpMyAdmin
+ */
+declare(strict_types=1);
+
+namespace PhpMyAdmin\Plugins;
+
+use PhpMyAdmin\Config;
+use PhpMyAdmin\Core;
+use PhpMyAdmin\Message;
+use PhpMyAdmin\Template;
+use PhpMyAdmin\TwoFactor;
+
+/**
+ * Two factor authentication plugin class
+ *
+ * This is basic implementation which does no
+ * additional authentication, subclasses are expected
+ * to implement this.
+ *
+ * @package PhpMyAdmin
+ */
+class TwoFactorPlugin
+{
+ /**
+ * @var string
+ */
+ public static $id = '';
+
+ /**
+ * Whether to show submit button in form
+ */
+ public static $showSubmit = true;
+
+ /**
+ * @var TwoFactor
+ */
+ protected $_twofactor;
+
+ /**
+ * @var boolean
+ */
+ protected $_provided;
+
+ /**
+ * @var string
+ */
+ protected $_message;
+
+ /**
+ * @var Template
+ */
+ public $template;
+
+ /**
+ * Creates object
+ *
+ * @param TwoFactor $twofactor TwoFactor instance
+ */
+ public function __construct(TwoFactor $twofactor)
+ {
+ $this->_twofactor = $twofactor;
+ $this->_provided = false;
+ $this->_message = '';
+ $this->template = new Template();
+ }
+
+ /**
+ * Returns authentication error message
+ *
+ * @return string
+ */
+ public function getError()
+ {
+ if ($this->_provided) {
+ if (! empty($this->_message)) {
+ return Message::rawError(
+ sprintf(__('Two-factor authentication failed: %s'), $this->_message)
+ )->getDisplay();
+ }
+ return Message::rawError(
+ __('Two-factor authentication failed.')
+ )->getDisplay();
+ }
+ return '';
+ }
+
+ /**
+ * Checks authentication, returns true on success
+ *
+ * @return boolean
+ */
+ public function check()
+ {
+ return true;
+ }
+
+ /**
+ * Renders user interface to enter two-factor authentication
+ *
+ * @return string HTML code
+ */
+ public function render()
+ {
+ return '';
+ }
+
+ /**
+ * Renders user interface to configure two-factor authentication
+ *
+ * @return string HTML code
+ */
+ public function setup()
+ {
+ return '';
+ }
+
+ /**
+ * Performs backend configuration
+ *
+ * @return boolean
+ */
+ public function configure()
+ {
+ return true;
+ }
+
+ /**
+ * Get user visible name
+ *
+ * @return string
+ */
+ public static function getName()
+ {
+ return __('No Two-Factor Authentication');
+ }
+
+ /**
+ * Get user visible description
+ *
+ * @return string
+ */
+ public static function getDescription()
+ {
+ return __('Login using password only.');
+ }
+
+ /**
+ * Return an applicaiton ID
+ *
+ * Either hostname or hostname with scheme.
+ *
+ * @param boolean $return_url Whether to generate URL
+ *
+ * @return string
+ */
+ public function getAppId($return_url)
+ {
+ /** @var Config $PMA_Config */
+ global $PMA_Config;
+
+ $url = $PMA_Config->get('PmaAbsoluteUri');
+ $parsed = [];
+ if (! empty($url)) {
+ $parsed = parse_url($url);
+ }
+ if (empty($parsed['scheme'])) {
+ $parsed['scheme'] = $PMA_Config->isHttps() ? 'https' : 'http';
+ }
+ if (empty($parsed['host'])) {
+ $parsed['host'] = Core::getenv('HTTP_HOST');
+ }
+ if ($return_url) {
+ return $parsed['scheme'] . '://' . $parsed['host'] . (! empty($parsed['port']) ? ':' . $parsed['port'] : '');
+ } else {
+ return $parsed['host'];
+ }
+ }
+}