* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-class CityGuestLogin extends BaseFrameworkSystem implements LoginableUser {
+class CityGuestLogin extends BaseFrameworkSystem implements LoginableUser, Registerable {
/**
* The hashed password
*/
* @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
$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
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-class CityUserLogin extends BaseFrameworkSystem implements LoginableUser {
+class CityUserLogin extends BaseFrameworkSystem implements LoginableUser, Registerable {
/**
* The hashed password
*/
* @todo user account.
*/
public function doLogin (Requestable $requestInstance, Responseable $responseInstance) {
- // Get member class
- $userClass = $this->getConfigInstance()->getConfigEntry('user_class');
-
- // Get a user instance
- $userInstance = call_user_func_array(array($userClass, 'createMemberByRequest'), array($requestInstance));
+ // Get a user instance from factory
+ $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
$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 a dummy instance
+ $dummyInstance = Member::createMemberByRequest($requestInstance);
+ }
+
/**
* Determines wether the login was fine. This is done by checking if 'login' instance is in registry
*