home *** CD-ROM | disk | FTP | other *** search
/ Cricao de Sites - 650 Layouts Prontos / WebMasters.iso / Servidores / xampp-win32-1.6.7-installer.exe / php / tmp / PEAR-1.7.1 / PEAR / Command / Auth.php next >
Encoding:
PHP Script  |  2008-02-15  |  6.1 KB  |  203 lines

  1. <?php
  2. /**
  3.  * PEAR_Command_Auth (login, logout commands)
  4.  *
  5.  * PHP versions 4 and 5
  6.  *
  7.  * LICENSE: This source file is subject to version 3.0 of the PHP license
  8.  * that is available through the world-wide-web at the following URI:
  9.  * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
  10.  * the PHP License and are unable to obtain it through the web, please
  11.  * send a note to license@php.net so we can mail you a copy immediately.
  12.  *
  13.  * @category   pear
  14.  * @package    PEAR
  15.  * @author     Stig Bakken <ssb@php.net>
  16.  * @author     Greg Beaver <cellog@php.net>
  17.  * @copyright  1997-2008 The PHP Group
  18.  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
  19.  * @version    CVS: $Id: Auth.php,v 1.31 2008/01/03 20:26:36 cellog Exp $
  20.  * @link       http://pear.php.net/package/PEAR
  21.  * @since      File available since Release 0.1
  22.  */
  23.  
  24. /**
  25.  * base class
  26.  */
  27. require_once 'PEAR/Command/Common.php';
  28. require_once 'PEAR/Config.php';
  29.  
  30. /**
  31.  * PEAR commands for login/logout
  32.  *
  33.  * @category   pear
  34.  * @package    PEAR
  35.  * @author     Stig Bakken <ssb@php.net>
  36.  * @author     Greg Beaver <cellog@php.net>
  37.  * @copyright  1997-2008 The PHP Group
  38.  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
  39.  * @version    Release: 1.7.1
  40.  * @link       http://pear.php.net/package/PEAR
  41.  * @since      Class available since Release 0.1
  42.  */
  43. class PEAR_Command_Auth extends PEAR_Command_Common
  44. {
  45.     // {{{ properties
  46.  
  47.     var $commands = array(
  48.         'login' => array(
  49.             'summary' => 'Connects and authenticates to remote server',
  50.             'shortcut' => 'li',
  51.             'function' => 'doLogin',
  52.             'options' => array(),
  53.             'doc' => '<channel name>
  54. Log in to a remote channel server.  If <channel name> is not supplied, 
  55. the default channel is used. To use remote functions in the installer
  56. that require any kind of privileges, you need to log in first.  The
  57. username and password you enter here will be stored in your per-user
  58. PEAR configuration (~/.pearrc on Unix-like systems).  After logging
  59. in, your username and password will be sent along in subsequent
  60. operations on the remote server.',
  61.             ),
  62.         'logout' => array(
  63.             'summary' => 'Logs out from the remote server',
  64.             'shortcut' => 'lo',
  65.             'function' => 'doLogout',
  66.             'options' => array(),
  67.             'doc' => '
  68. Logs out from the remote server.  This command does not actually
  69. connect to the remote server, it only deletes the stored username and
  70. password from your user configuration.',
  71.             )
  72.  
  73.         );
  74.  
  75.     // }}}
  76.  
  77.     // {{{ constructor
  78.  
  79.     /**
  80.      * PEAR_Command_Auth constructor.
  81.      *
  82.      * @access public
  83.      */
  84.     function PEAR_Command_Auth(&$ui, &$config)
  85.     {
  86.         parent::PEAR_Command_Common($ui, $config);
  87.     }
  88.  
  89.     // }}}
  90.  
  91.     // {{{ doLogin()
  92.  
  93.     /**
  94.      * Execute the 'login' command.
  95.      *
  96.      * @param string $command command name
  97.      *
  98.      * @param array $options option_name => value
  99.      *
  100.      * @param array $params list of additional parameters
  101.      *
  102.      * @return bool TRUE on success or
  103.      * a PEAR error on failure
  104.      *
  105.      * @access public
  106.      */
  107.     function doLogin($command, $options, $params)
  108.     {
  109.         $reg = &$this->config->getRegistry();
  110.         
  111.         // If a parameter is supplied, use that as the channel to log in to
  112.         if (isset($params[0])) {
  113.             $channel = $params[0];
  114.         } else {
  115.             $channel = $this->config->get('default_channel');
  116.         }
  117.         
  118.         $chan = $reg->getChannel($channel);
  119.         if (PEAR::isError($chan)) {
  120.             return $this->raiseError($chan);
  121.         }
  122.         $server = $this->config->get('preferred_mirror', null, $channel);
  123.         $remote = &$this->config->getRemote();
  124.         $username = $this->config->get('username', null, $channel);
  125.         if (empty($username)) {
  126.             $username = isset($_ENV['USER']) ? $_ENV['USER'] : null;
  127.         }
  128.         $this->ui->outputData("Logging in to $server.", $command);
  129.         
  130.         list($username, $password) = $this->ui->userDialog(
  131.             $command,
  132.             array('Username', 'Password'),
  133.             array('text',     'password'),
  134.             array($username,  '')
  135.             );
  136.         $username = trim($username);
  137.         $password = trim($password);
  138.  
  139.         $ourfile = $this->config->getConfFile('user');
  140.         if (!$ourfile) {
  141.             $ourfile = $this->config->getConfFile('system');
  142.         }
  143.  
  144.         $this->config->set('username', $username, 'user', $channel);
  145.         $this->config->set('password', $password, 'user', $channel);
  146.  
  147.         if ($chan->supportsREST()) {
  148.             $ok = true;
  149.         } else {
  150.             $remote->expectError(401);
  151.             $ok = $remote->call('logintest');
  152.             $remote->popExpect();
  153.         }
  154.         if ($ok === true) {
  155.             $this->ui->outputData("Logged in.", $command);
  156.             // avoid changing any temporary settings changed with -d
  157.             $ourconfig = new PEAR_Config($ourfile, $ourfile);
  158.             $ourconfig->set('username', $username, 'user', $channel);
  159.             $ourconfig->set('password', $password, 'user', $channel);
  160.             $ourconfig->store();
  161.         } else {
  162.             return $this->raiseError("Login failed!");
  163.         }
  164.         return true;
  165.     }
  166.  
  167.     // }}}
  168.     // {{{ doLogout()
  169.  
  170.     /**
  171.      * Execute the 'logout' command.
  172.      *
  173.      * @param string $command command name
  174.      *
  175.      * @param array $options option_name => value
  176.      *
  177.      * @param array $params list of additional parameters
  178.      *
  179.      * @return bool TRUE on success or
  180.      * a PEAR error on failure
  181.      *
  182.      * @access public
  183.      */
  184.     function doLogout($command, $options, $params)
  185.     {
  186.         $reg = &$this->config->getRegistry();
  187.         $channel = $this->config->get('default_channel');
  188.         $chan = $reg->getChannel($channel);
  189.         if (PEAR::isError($chan)) {
  190.             return $this->raiseError($chan);
  191.         }
  192.         $server = $this->config->get('preferred_mirror');
  193.         $this->ui->outputData("Logging out from $server.", $command);
  194.         $this->config->remove('username');
  195.         $this->config->remove('password');
  196.         $this->config->store();
  197.         return true;
  198.     }
  199.  
  200.     // }}}
  201. }
  202.  
  203. ?>