X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=application%2Fcity%2Fmain%2Flogin%2Fclass_CityGuestLogin.php;h=61f00b45436e35f6f26fe232854cb01e65819fbd;hb=a4d43c71eff407c75cc8ed59bc382267c16ec52c;hp=4b8f5eb35e61e57785e8320bf9285751d4816951;hpb=6b5ab4234376c367887b641d20006dd0e3b0a6ae;p=city.git diff --git a/application/city/main/login/class_CityGuestLogin.php b/application/city/main/login/class_CityGuestLogin.php index 4b8f5eb..61f00b4 100644 --- a/application/city/main/login/class_CityGuestLogin.php +++ b/application/city/main/login/class_CityGuestLogin.php @@ -21,7 +21,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -class CityGuestLogin extends BaseFrameworkSystem implements LoginableUser { +class CityGuestLogin extends BaseFrameworkSystem implements LoginableUser, Registerable { /** * The hashed password */ @@ -58,42 +58,18 @@ class CityGuestLogin 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 */ 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('user'))) { - // Username found! - $method = 'createGuestByUsername'; - $data = $requestInstance->getRequestElement('user'); - } // END - if - - // Is a method detected? - if (is_null($method)) { - // Then abort here - throw new UserAuthMethodException($this, self::EXCEPTION_MISSING_METHOD); - } elseif (!method_exists($this->getConfigInstance()->getConfigEntry('guest_class'), $method)) { - // The method is invalid! - throw new MissingMethodException(array($this, $method), self::EXCEPTION_MISSING_METHOD); - } - // Get a user instance - $userInstance = call_user_func_array(array($this->getConfigInstance()->getConfigEntry('guest_class'), $method), array($data)); + $userInstance = UserFactory::createUserByRequest($requestInstance); // Remember this new instance in registry Registry::getRegistry()->addInstance('user', $userInstance); // Is the password correct? - if ($userInstance->ifPasswordHashMatches($requestInstance) === false) { + if ($userInstance->ifPasswordHashMatches($requestInstance) === FALSE) { // Mismatching password throw new UserPasswordMismatchException(array($this, $userInstance), BaseUser::EXCEPTION_USER_PASS_MISMATCH); } // END - if @@ -107,6 +83,18 @@ class CityGuestLogin extends BaseFrameworkSystem implements LoginableUser { $helperInstance->executeLogin($responseInstance); } + /** + * Check if the implementation is correct. Only the request instance is + * needed as no redirect is done here. + * + * @param $requestInstance An instance of a Requestable class + * @return + */ + public function testLogin (Requestable $requestInstance) { + // Create dummy instance + $dummyInstance = Guest::createGuestByRequest($requestInstance); + } + /** * Determines wether the login was fine. This is done by checking if 'login' instance is in registry *