1
0
mirror of https://github.com/vrana/adminer.git synced 2025-08-16 19:44:00 +02:00

Allow connecting to different drivers in login-servers

This commit is contained in:
Jakub Vrana
2018-02-22 12:38:22 +01:00
parent cd503f6a0d
commit 3410836c12
5 changed files with 32 additions and 44 deletions

View File

@@ -21,9 +21,9 @@ class AdminerLoginOtp {
}
}
function loginFormField($name, $default) {
function loginFormField($name, $heading, $value) {
if ($name == 'password') {
return $default
return $heading . $value
. "<tr><th><acronym title='One Time Password' lang='en'>OTP</acronym>"
. "<td><input type='number' name='auth[otp]' value='" . h($_SESSION["otp"]) . "' size='6' autocomplete='off'>\n"
;

View File

@@ -8,48 +8,35 @@
*/
class AdminerLoginServers {
/** @access protected */
var $servers, $driver;
var $servers;
/** Set supported servers
* @param array array($domain) or array($domain => $description) or array($category => array())
* @param string
* @param array array($description => array("server" => , "driver" => "server|pgsql|sqlite|..."))
*/
function __construct($servers, $driver = "server") {
function __construct($servers) {
$this->servers = $servers;
$this->driver = $driver;
if ($_POST["auth"]) {
$key = $_POST["auth"]["server"];
$_POST["auth"]["driver"] = $this->servers[$key]["driver"];
}
}
function serverName($server) {
return h($this->servers[$server]);
function credentials() {
return array($this->servers[SERVER]["server"], $_GET["username"], get_password());
}
function login($login, $password) {
// check if server is allowed
foreach ($this->servers as $key => $val) {
$servers = $val;
if (!is_array($val)) {
$servers = array($key => $val);
}
foreach ($servers as $k => $v) {
if ((is_string($k) ? $k : $v) == SERVER) {
return;
}
}
if (!$this->servers[SERVER]) {
return false;
}
return false;
}
function loginForm() {
?>
<table cellspacing="0">
<tr><th><?php echo lang('Server'); ?><td><input type="hidden" name="auth[driver]" value="<?php echo $this->driver; ?>"><select name="auth[server]"><?php echo optionlist($this->servers, SERVER); ?></select>
<tr><th><?php echo lang('Username'); ?><td><input id="username" name="auth[username]" value="<?php echo h($_GET["username"]); ?>">
<tr><th><?php echo lang('Password'); ?><td><input type="password" name="auth[password]">
</table>
<p><input type="submit" value="<?php echo lang('Login'); ?>">
<?php
echo checkbox("auth[permanent]", 1, $_COOKIE["adminer_permanent"], lang('Permanent login')) . "\n";
return true;
function loginFormField($name, $heading, $value) {
if ($name == 'driver') {
return '';
} elseif ($name == 'server') {
return $heading . "<select name='auth[server]'>" . optionlist(array_keys($this->servers), SERVER) . "</select>\n";
}
}
}

View File

@@ -160,7 +160,7 @@ class AdminerPlugin extends Adminer {
return $this->_applyPlugin(__FUNCTION__, $args);
}
function loginFormField($name, $default) {
function loginFormField($name, $heading, $value) {
$args = func_get_args();
return $this->_applyPlugin(__FUNCTION__, $args);
}