diff --git a/plugins/login-external.php b/plugins/login-external.php new file mode 100644 index 00000000..20926bb5 --- /dev/null +++ b/plugins/login-external.php @@ -0,0 +1,138 @@ +driver)) { + $externals->driver = 'server'; + } + if (isset($_POST['auth'])) { + $_POST['auth']['driver'] = $externals->driver; + $_POST['auth']['server'] = $_POST['auth']['username'] = $_POST['auth']['password'] = ''; + } + $this->externals = $externals; + } + + function name() { + return empty($this->externals->app_name) ? null : $this->externals->app_name; + } + + function credentials() { + if (empty($this->externals->authenticated)) { + # always check external stat rather than relying on adminer's session login + auth_error( + empty($this->externals->expired_html) ? + 'External authentication expired.' : + $this->externals->expired_html + ); + return false; + } + return [ + $this->externals->server, + $this->externals->username, + $this->externals->password, + ]; + } + + function database() { + return empty($this->externals->database) ? null : $this->externals->database; + } + + function loginForm() { + if (empty($this->externals->authenticated)) { + if (empty($this->externals->failure_html)) { + echo '

You must first log in to the system that grants access to this tool.

'; + } + else { + echo $this->externals->failure_html; + } + return false; + } + + if (empty($this->externals->manual_login)) { + echo script( + <<database()); + return << + +EOHTML; + case 'driver': + if (function_exists('get_driver')) { + $value = h($this->externals->driver); + $driver = h(get_driver($this->externals->driver)) ?: 'Unknown'; + return <<$driver + +EOHTML; + } + $value = ' value="' . h($this->externals->driver) . '"'; + # don't break + case 'server': + case 'username': + case 'password': + return << + +EOHTML; + } + } + + function login($login, $password) { + return !empty($this->externals->authenticated); + } +}