* @version 0.0.0 * @copyright Copyright(c) 2007, 2008 Roland Haeder, this is free software * @license GNU GPL 3.0 or any newer version * @link http://www.ship-simu.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ class ShipSimuLoginHelper extends BaseLoginHelper implements HelpableLogin { /** * The login method we shall choose */ private $authMethod = ""; /** * Instance for a request class */ private $requestInstance = null; // Exception constants const EXCEPTION_INVALID_USER_INSTANCE = 0x080; /** * Protected constructor * * @return void */ protected function __construct () { // Call parent constructor parent::__construct(__CLASS__); // Set part description $this->setObjectDescription("Login helper for Ship-Simu"); // Create unique ID number $this->generateUniqueId(); } /** * Creates an instance of this class by given request instance * * @param $requestInstance An instance of a Requestable class * @return $helperInstance An instance of this helper class * @throws UserInstanceMissingException If the user instance in registry * is missing or invalid */ public final static function createShipSimuLoginHelper (Requestable $requestInstance) { // Get a new instance first $helperInstance = new ShipSimuLoginHelper(); // Get a user instance from registry $userInstance = Registry::getRegistry()->getInstance('user'); // Is this instance valid? if (!$userInstance instanceof ManageableUser) { // Thrown an exception here throw new UserInstanceMissingException (array($helperInstance, 'user'), self::EXCEPTION_INVALID_USER_INSTANCE); } // END - if // Set default login method from config $helperInstance->setDefaultAuthMethod(); // Set request instance $helperInstance->setRequestInstance($requestInstance); // Return the prepared instance return $helperInstance; } /** * Setter for default login method from config * * @return void */ protected function setDefaultAuthMethod () { $this->authMethod = $this->getConfigInstance()->readConfig('auth_method_class'); } /** * Setter for request instance * * @param $requestInstance A Requestable class instance * @return void */ public final function setRequestInstance (Requestable $requestInstance) { $this->requestInstance = $requestInstance; } /** * Getter for request instance * * @param * @return $requestInstance A Requestable class instance */ public final function getRequestInstance () { return $this->requestInstance; } /** * Execute the login request by given response instance. This instance can * be used for sending cookies or at least the session id out. * * @param $responseInstance An instance of a Responseable class * @return void */ public function executeLogin (Responseable $responseInstance) { // Get an instance from the login method $loginInstance = ObjectFactory::createObjectByName($this->authMethod, array($responseInstance)); // Set user cookie $loginInstance->setUserAuth($this->requestInstance->getRequestElement('username')); // Set password cookie $loginInstance->setPasswordAuth($this->requestInstance->getRequestElement('pass_hash')); // Remember this login instance for later usage Registry::getRegistry()->addInstance('login', $loginInstance); } } // ?>