Commits

christiansalazar committed fefa510

nuevo metodo CrugUserManager.loginUser. +reconocimiento de crugeconnector en view login.

  • Participants
  • Parent commits 9b2fa01

Comments (0)

Files changed (2)

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;
+	}
+
 	
 }

views/ui/login.php

 		?>
 	</div>
 
+	<?php
+		//	si el componente CrugeConnector existe lo usa:
+		//
+		if(Yii::app()->getComponent('crugeconnector') != null){
+		if(Yii::app()->crugeconnector->hasEnabledClients){ 
+	?>
+	<div class='crugeconnector'>
+		<span>Tambien puedes iniciar sesión con:</span>
+		<ul>
+		<?php 
+			$cc = Yii::app()->crugeconnector;
+			foreach($cc->enabledClients as $key=>$config){
+				$image = CHtml::image($cc->getClientDefaultImage($key));
+				echo "<li>".CHtml::link($image,
+					$cc->getClientLoginUrl($key))."</li>";
+			}
+		?>
+		</ul>
+	</div>
+	<?php }} ?>
+	
+
 <?php $this->endWidget(); ?>
 </div>
-<?php endif; ?>
+<?php endif; ?>