X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=application%2Fship-simu%2Fmain%2Flogin%2Fclass_ShipSimuUserLogin.php;h=3b1acf7dd5a19d1a555f1b89edbabb54853496e5;hb=0f10df895de1dd67a2bbec5264f01c5e146de952;hp=1f62ded44872b635a679bc03b8acde9156a65ce2;hpb=9327c11e14407cce78208de01b5cdd2de87e13a3;p=shipsimu.git diff --git a/application/ship-simu/main/login/class_ShipSimuUserLogin.php b/application/ship-simu/main/login/class_ShipSimuUserLogin.php index 1f62ded..3b1acf7 100644 --- a/application/ship-simu/main/login/class_ShipSimuUserLogin.php +++ b/application/ship-simu/main/login/class_ShipSimuUserLogin.php @@ -4,7 +4,7 @@ * * @author Roland Haeder * @version 0.0.0 - * @copyright Copyright(c) 2007, 2008 Roland Haeder, this is free software + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Ship-Simu Developer Team * @license GNU GPL 3.0 or any newer version * @link http://www.ship-simu.org * @@ -36,12 +36,6 @@ class ShipSimuUserLogin extends BaseFrameworkSystem implements LoginableUser { // Call parent constructor parent::__construct(__CLASS__); - // Set part description - $this->setObjectDescription("Login for Ship-Simu"); - - // Create unique ID number - $this->generateUniqueId(); - // Clean up a little $this->removeNumberFormaters(); $this->removeSystemArray(); @@ -68,56 +62,35 @@ class ShipSimuUserLogin extends BaseFrameworkSystem implements LoginableUser { * @param $requestInstance An instance of a Requestable class * @param $responseInstance An instance of a Responseable class * @return void - * @throws UserAuthMethodException If wether username nor email login - * was detected - * @throws MissingMethodException If a method was not found in the - * User class * @throws UserPasswordMismatchException If the supplied password did not * match with the stored password + * @todo We need to add something here which will make more than one + * @todo guest logins, users who are online but based on the same + * @todo user account. */ public function doLogin (Requestable $requestInstance, Responseable $responseInstance) { // By default no method is selected $method = null; $data = ""; - // Detect login method (username or email) and try to get a userinstance - if (!is_null($requestInstance->getRequestElement('username'))) { - // Username found! - $method = "createUserByUsername"; - $data = $requestInstance->getRequestElement('username'); - } elseif (!is_null($requestInstance->getRequestElement('email'))) { - // Email found! - $method = "createUserByEmail"; - $data = $requestInstance->getRequestElement('email'); - } - - // Is a method detected? - if (is_null($method)) { - // Then abort here - throw new UserAuthMethodException($this, self::EXCEPTION_MISSING_METHOD); - } elseif (!method_exists($this->getConfigInstance()->readConfig('user_class'), $method)) { - // The method is invalid! - throw new MissingMethodException(array($this, $method), self::EXCEPTION_MISSING_METHOD); - } - - // Get a instance of the registry - $userInstance = Registry::getRegistry()->getInstance('user'); - - // Is there an instance? - if (is_null($userInstance)) { - // Get a user instance - $userInstance = call_user_func_array(array($this->getConfigInstance()->readConfig('user_class'), $method), array($data)); - - // Remember this new instance in registry - Registry::getRegistry()->addInstance($userInstance); - } // END - if + // Get member class + $userClass = $this->getConfigInstance()->getConfigEntry('user_class'); + + // Get a user instance + $userInstance = call_user_func_array(array($userClass, 'createMemberByRequest'), array($requestInstance)); + + // Remember this new instance in registry + Registry::getRegistry()->addInstance('user', $userInstance); // Is the password correct? - if (!$userInstance->ifPasswordHashMatches($requestInstance)) { + if ($userInstance->ifPasswordHashMatches($requestInstance) === false) { // Mismatching password - throw new UserPasswordMismatchException(array($this, $userInstance), User::EXCEPTION_USER_PASS_MISMATCH); + $userInstance->debugInstance(); + throw new UserPasswordMismatchException(array($this, $userInstance), BaseUser::EXCEPTION_USER_PASS_MISMATCH); } // END - if + // ToDo place + // Now do the real login. This can be cookie- or session-based login // which depends on the admins setting then on the user's taste. // 1) Get a login helper instance @@ -128,7 +101,7 @@ class ShipSimuUserLogin extends BaseFrameworkSystem implements LoginableUser { } /** - * Determines wether the login was fine. This is done by checking if the 'login' instance is in registry + * Determines wether the login was fine. This is done by checking if 'login' instance is in registry * * @return $loginDone Wether the login was fine or not */ @@ -141,14 +114,14 @@ class ShipSimuUserLogin extends BaseFrameworkSystem implements LoginableUser { } /** - * Encrypt the given request key or throw an exception if the key was not - * found in the request + * Encrypt given request key or throw an exception if key was not found in + * request * * @param $requestKey Key in request class * @return void */ public function encryptPassword ($requestKey) { - // Check if the password is found in the request + // Check if password is found in request if ($this->getRequestInstance()->isRequestElementSet($requestKey)) { // So encrypt the password and store it for later usage in // the request: @@ -160,9 +133,9 @@ class ShipSimuUserLogin extends BaseFrameworkSystem implements LoginableUser { $userInstance = Registry::getRegistry()->getInstance('user'); // Get a crypto helper and hash the password - $this->hashedPassword = ObjectFactory::createObjectByConfiguredName('crypto_class')->hashPassword($plainPassword, $userInstance->getPasswordHash()); + $this->hashedPassword = ObjectFactory::createObjectByConfiguredName('crypto_class')->hashString($plainPassword, $userInstance->getPasswordHash()); - // Store the hash back in the request + // Store the hash back in request $this->getRequestInstance()->setRequestElement('pass_hash', $this->hashedPassword); } // END - if }