Files
server/usr/share/psa-horde/imp/lib/Imap/Password.php
2026-01-07 20:52:11 +01:00

99 lines
2.1 KiB
PHP

<?php
/**
* Copyright 2013-2017 Horde LLC (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.horde.org/licenses/gpl.
*
* @category Horde
* @copyright 2013-2017 Horde LLC
* @license http://www.horde.org/licenses/gpl GPL
* @package IMP
*/
/**
* Dynamically generate the password needed for the mail server connection.
*
* @author Michael Slusarz <slusarz@horde.org>
* @category Horde
* @copyright 2013-2017 Horde LLC
* @license http://www.horde.org/licenses/gpl GPL
* @package IMP
*/
class IMP_Imap_Password implements Horde_Imap_Client_Base_Password, Serializable
{
/* Password key. */
const PASSWORD_KEY = 'imap_ob_pass';
/**
* Object storage ID.
*
* @var string
*/
private $_id;
/**
* Mail server password.
*
* @var string
*/
private $_password;
/**
* Constructor.
*
* @param string $password The mail server password.
*/
public function __construct($password)
{
$this->_password = $password;
}
/* Horde_Imap_Client_Base_Password methods. */
/**
*/
public function getPassword()
{
return $this->_password;
}
/* Serializable methods. */
/**
*/
public function serialize()
{
global $session;
if (!isset($this->_id)) {
$this->_id = strval(new Horde_Support_Randomid());
}
$session->set('imp', self::PASSWORD_KEY . '/' . $this->_id, $this->_password, $session::ENCRYPT);
return $this->_id;
}
/**
* @throws RuntimeException
*/
public function unserialize($data)
{
$this->_id = $data;
$password = $GLOBALS['session']->get(
'imp',
self::PASSWORD_KEY . '/' . $this->_id
);
if (!strlen($password)) {
/* Without a password, this object is invalid. */
throw new RuntimeException(
'Invalid object since password is empty.'
);
}
$this->_password = $password;
}
}