Commits

christiansalazar committed d962fb2

nuevo, icrugestoreduser.bypassCaptcha, usado en yii.app.user.um.createBlankUser

  • Participants
  • Parent commits 56eb2e5

Comments (0)

Files changed (3)

 		// true: es para indicar que cargue los valores de los campos personalizados.
 		// por defecto es : false.
 	 ?>
-	 
+
+
+##Manejar un usuario usando el API de Cruge
+
+A veces es necesario crear un usuario desde nuestro sistema y no solo usando la interfaz de usuario que Cruge provee, por esto Cruge provee un simple metodo para crear un nuevo usuario:
+
+	<?php 
+		// asi se crea un usuario (una nueva instancia en memoria volatil)
+		$usuarioNuevo = Yii::app()->user->um->createBlankUser(); 
+		
+		// ponerle una clave
+		Yii::app()->user->um->changePassword($usuarioNuevo,"nueva clave");
+		
+		// para guardar el usuario hay dos modos:
+		
+		// a) (recomendada) usando el API, la cual hace pasar al usuario por el sistema de filtros.
+			Yii::app()->user->um->save($usuarioNuevo);
+			
+		// b) directo (no recomendada porque hace bypass del sistema de filtros de Cruge)
+			$usuarioNuevo->save();
+			
+		
+	?>
 
 ##Campos Personalizados:
 

components/CrugeUserManager.php

 		crea una nueva instancia de ICrugeStoredUser
 	*/
 	public function createBlankUser(){
-		return CrugeFactory::get()->getICrugeStoredUserNewModel();
+		$user = CrugeFactory::get()->getICrugeStoredUserNewModel();
+		if($user != null){
+			// asegura que no falle al validar por terminos y condiciones
+			$user->terminosYCondiciones = true;
+			// asegura que no falle al validar por captcha
+			//	cruge\models\data\CrugeStoredUser.php (bypassCaptcha y _getCaptchaRule)
+			$user->bypassCaptcha = true;
+			return $user;
+		}else
+		return null;
 	}
 	
 	/*

models/data/CrugeStoredUser.php

 	public $terminosYCondiciones;
 	public $verifyCode;
 	
+	// establecer a true si se quiere saltar la validacion de captcha.
+	// ver acerca de: cruge\components\CrugeUserManager.php::createBlankUser
+	public $bypassCaptcha;	
+	
 
 	/* es un loadModel de uso multiple. $modo puede ser: 'iduser','username' o 'email' para
 		indicar por cual campo se quiere cargar el modelo.
 		parent::setAttributes($values);
 	}
 	public function validate($attributes = NULL, $clearErrors = true){
-		
 		// realiza la validacion normal sobre los atributos de este modelo
 		//
 		$validateResult = parent::validate();
 				),
 				
 				
-			array('verifyCode', 
-						(Yii::app()->user->um->getDefaultSystem()->getn('registerusingcaptcha') 
-							== 1) ? 'required' : 'safe'
-					,'on'=>'insert',
+			array('verifyCode', $this->_getCaptchaRule(), 'on'=>'insert',
 					'message'=>CrugeTranslator::t('El codigo de seguridad es requerido'),
 				),
 			array('verifyCode', 'captcha',
 		);
 	}
 	
+	/**
+		al establecer $_crugeStoredUser->bypassCaptcha = true; 
+		entonces el captcha no sera tomado en cuenta.
+		
+		esta funcion es util cuando se quiere crear un nuevo usuario de cruge por la via del API.
+	*/
+	private function _getCaptchaRule(){
+		if(Yii::app()->user->um->getDefaultSystem()->getn('registerusingcaptcha') == 1){
+			// el administrador decidio pedir captcha para registrar los usuarios,
+			// 	pero quiza el flag bypassCaptcha este activo.
+			if($this->bypassCaptcha == true){
+				// captcha es requerido, pero sera no sera tomado en cuenta.
+				$this->verifyCode = null;
+				return 'safe';
+			}else
+			return 'required'; // captcha es requerido
+		}
+		else 
+		{
+			// el administrador ha deshabilitado el uso de captcha.
+			$this->verifyCode = null;
+			return 'safe';
+		}
+	}
+	
 	
 	public function validate_unique($att, $params){
 		$model = self::model()->findByAttributes(array($att=>$this[$att]));