*/
class PEAR_Command_Auth extends PEAR_Command_Common
{
- // {{{ constructor
+ // {{{ command definitions
+
+ var $commands = array(
+ 'login' => array(
+ 'summary' => 'Connects and authenticates to remote server',
+ 'function' => 'doLogin',
+ 'options' => array(),
+ 'doc' => 'To use functions in the installer that require any kind
+of privilege, you need to log in first. The username and password you enter
+here will be stored in your per-user PEAR configuration (~/.pearrc on
+Unix-like systems). After logging in, your username and password will be
+passed along in every subsequent operation on the remote server.
+',
+ ),
+ 'logout' => array(
+ 'summary' => 'Logs out from the remote server',
+ 'function' => 'doLogout',
+ 'options' => array(),
+ 'doc' => 'Logs out from the remote server.
+This command does not actually connect to the remote
+server, it only deletes the stored username and password from your
+user configuration.
+',
+ )
+
+ );
+
+ // }}}
/**
* PEAR_Command_Auth constructor.
parent::PEAR_Command_Common($ui, $config);
}
- // }}}
-
- // {{{ getCommands()
-
/**
- * Return a list of all the commands defined by this class.
- * @return array list of commands
+ * Execute the 'logout' command.
+ *
+ * @param string $command command name
+ *
+ * @param array $options option_name => value
+ *
+ * @param array $params list of additional parameters
+ *
+ * @return bool TRUE on success, FALSE for unknown commands, or
+ * a PEAR error on failure
+ *
* @access public
*/
- function getCommands()
+ function doLogin($command, $options, $params)
{
- return array('login' => 'Log In',
- 'logout' => 'Log Out');
- }
-
- // }}}
+ $server = $this->config->get('master_server');
+ $remote = new PEAR_Remote($this->config);
+ $username = $this->config->get('username');
+ if (empty($username)) {
+ $username = @$_ENV['USER'];
+ }
+ $this->ui->displayLine("Logging in to $server.");
+ $username = trim($this->ui->userDialog('Username', 'text', $username));
- function getHelp($command)
- {
- switch ($command) {
- case 'login':
- return array(null, 'Connects to the remote server');
- case 'logout':
- return array(null, 'Disconnects from the remote server');
+ $this->config->set('username', $username);
+ $password = trim($this->ui->userDialog('Password', 'password'));
+ $this->config->set('password', $password);
+ $remote->expectError(401);
+ $ok = $remote->call('logintest');
+ $remote->popExpect();
+ if ($ok === true) {
+ $this->ui->displayLine("Logged in.");
+ $this->config->store();
+ } else {
+ $this->ui->displayLine("Login failed!");
}
+
}
- // {{{ run()
/**
- * Execute the command.
+ * Execute the 'logout' command.
*
- * @param string command name
+ * @param string $command command name
*
- * @param array option_name => value
+ * @param array $options option_name => value
*
- * @param array list of additional parameters
+ * @param array $params list of additional parameters
*
* @return bool TRUE on success, FALSE for unknown commands, or
* a PEAR error on failure
*
* @access public
*/
- function run($command, $options, $params)
+ function doLogout($command, $options, $params)
{
- $failmsg = '';
$server = $this->config->get('master_server');
- switch ($command) {
- case 'login': {
- $remote = new PEAR_Remote($this->config);
- $username = $this->config->get('username');
- if (empty($username)) {
- $username = @$_ENV['USER'];
- }
- $this->ui->displayLine("Logging in to $server.");
- $username = trim($this->ui->userDialog('Username', 'text', $username));
-
- $this->config->set('username', $username);
- $password = trim($this->ui->userDialog('Password', 'password'));
- $this->config->set('password', $password);
- $remote->expectError(401);
- $ok = $remote->call('logintest');
- $remote->popExpect();
- if ($ok === true) {
- $this->ui->displayLine("Logged in.");
- $this->config->store();
- } else {
- $this->ui->displayLine("Login failed!");
- }
- break;
- }
- case 'logout': {
- $this->ui->displayLine("Logging out from $server.");
- $this->config->remove('username');
- $this->config->remove('password');
- $this->config->store();
- break;
- }
- default: {
- return false;
- }
- }
- if ($failmsg) {
- return $this->raiseError($failmsg);
- }
- return true;
+ $this->ui->displayLine("Logging out from $server.");
+ $this->config->remove('username');
+ $this->config->remove('password');
+ $this->config->store();
}
- // }}}
}
?>
\ No newline at end of file