Source

cruge / components / CrugeUserManager.php

Diff from to

components/CrugeUserManager.php

 			throw new CrugeException("no se pudo crear el usuario: ".$errores);
 		}
 	}
+
+
+	/**
+	 * loginUser
+	 * 	metodo que emula el inicio de sesion usando un formulario, a diferencia
+	 * de actionLogin() el cual recibe los datos de un formulario aqui en cambio
+	 * se le dan los datos al modelo, basandonos en un usernameOremail.
+	 *
+	 *	actua tal cual si el usuario que inicio sesion en Facebook u OpenID
+	 *	haya llenado el formulario de login, solo que aqui se emula.
+	 *
+	 *	se respeta la sesion y todo tal cual
+	 *
+	 * @param mixed $usernameOremail 
+	 * @access public
+	 * @return instancia de ICrugeStoredUser o null 
+	 */
+	private function loginUser($usernameOremail){
+		Yii::log(__METHOD__." usernameOremail=".$usernameOremail,"info");
+		$user = $this->loadUser($usernameOremail);
+		if($user != null){
+			// crea un modelo de formulario y le pasa los datos, sin validar.
+			// aqui model es una instancia de cruge.models.ui.CrugeLogon
+			//
+			$model = $this->getNewCrugeLogon('login');
+			$model->authMode = CrugeFactory::get()->getConfiguredAuthMethodName();
+			$model->username = $usernameOremail;
+			$model->password = $user->password;
+			if($model->validate()){
+				if($model->login(true)==true){
+					Yii::log(__METHOD__." retorna al usuario. exitoso.","info");
+					return $user;
+				}
+				else
+				{
+					// no deberia ocurrir, porque se le esta dando el password,
+					// pero respetemos el resultado de login()...paranoia.
+					Yii::log(__METHOD__." retorna null. no deberia.","error");
+				}
+			}
+			else{
+				Yii::log(__METHOD__." retorna null."
+					.CHtml::errorSummary($model,'falla de validacion'),"error");
+			}
+		}
+		return null;
+	}
+
 	
 }