1: <?php
2: /**
3: * Abstract IMSP authentication class.
4: *
5: * Required Parameters:<pre>
6: * 'username' Username to logon to IMSP server as.
7: * 'password' Password for current user.
8: * 'server' The hostname of the IMSP server.
9: * 'port' The port of the IMSP server.</pre>
10: *
11: * Copyright 2003-2012 Horde LLC (http://www.horde.org/)
12: *
13: * See the enclosed file COPYING for license information (LGPL). If you
14: * did not receive this file, see http://www.horde.org/licenses/lgpl21.
15: *
16: * @author Michael Rubinsky <mrubinsk@horde.org>
17: * @package Horde_Imsp
18: */
19: abstract class Horde_Imsp_Auth_Base
20: {
21: protected $_params = array();
22:
23: /**
24: * Class variable to hold the resulting Horde_Imsp object
25: *
26: * @var Horde_Imsp_Client_Base
27: */
28: protected $_imsp;
29:
30: /**
31: * Constructor
32: *
33: * @param array $params
34: */
35: public function __construct(array $params = array())
36: {
37: $this->_params = $params;
38: }
39:
40: /**
41: * Attempts to login to IMSP server.
42: *
43: * @param Horde_Imsp_Client_Base $client The Imsp client connection.
44: * @param boolean $login Remain logged in after auth?
45: *
46: * @return boolean
47: */
48: public function authenticate(Horde_Imsp_Client_Base $client, $login = true)
49: {
50: $this->_imsp = $client;
51: if(!$this->_authenticate()) {
52: return false;
53: }
54: if (!$login) {
55: $this->_imsp->logout();
56: }
57:
58: return true;
59: }
60:
61: /**
62: * Private authentication function. Provides actual authentication code.
63: *
64: * @return boolean
65: */
66: abstract protected function _authenticate();
67:
68: /**
69: * Returns the type of this driver.
70: *
71: *
72: * @return string Type of IMSP_Auth driver instance
73: */
74: abstract public function getDriverType();
75:
76: /**
77: * Force a logout from the underlying IMSP stream.
78: *
79: */
80: abstract public function logout();
81: }
82: