Commits

Ricardo Obregón committed 52a8f9b

Agregado parámetro "hash" que permite personalizar el hash usado por Cruge

Comments (0)

Files changed (4)

 	//
 	public $userFilter='cruge.models.filters.DefaultUserFilter';
 
-	// indica si una clave es almacenada con MD5 o no.
+	// indica si una clave es almacenada con hash o no.
 	//
 	public $useEncryptedPassword = false;
 
+    // Indica el algoritmo de hash a usarse
+
+    public $hash = 'md5';
+
 	// estos atributos llamados xxxLayout, son para indicar que layout usar
 	// para los actions:
 	//
 
 	// sirve para que la controladora UiController pueda que nombre pasar a $_POST['??']
 	// para actualizar los atributos de una clase.  Si se llegase a cambiar una clase
-	// por otra entonces con solo cambiar aqui el nombre el formulario podrá trabajar de nuevo
+	// por otra entonces con solo cambiar aqui el nombre el formulario podrďż˝ trabajar de nuevo
 	//
 	// Es utilizada en cada referencia a $_POST o $_GET en la controladora de UiController
 	//
-	// ejemplo: Mańana no nos gusta CrugeField y cambiamos la clase por CrugeMyOwnField
+	// ejemplo: Ma�ana no nos gusta CrugeField y cambiamos la clase por CrugeMyOwnField
 	// entonces en este array se mapearia asi:  'CrugeField'=>'CrugeMyOwnField'
 	//
 	public $postNameMappings = array(

components/CrugeUserManager.php

 		@see getActivationUrl
 	*/
 	public function generateAuthenticationKey(ICrugeStoredUser $user){
-		$user->authkey = md5($user->username."-".$user->password);
+		$user->authkey = CrugeUtil::hash($user->username."-".$user->password);
 	}
 
 
 	public function changePassword(ICrugeStoredUser $user, $newPassword){
 		$epwd = $newPassword;
 		if(CrugeUtil::config()->useEncryptedPassword == true)
-			$epwd = md5($newPassword);
+			$epwd = CrugeUtil::hash($newPassword);
 		$user->password = $epwd;
 	}
 

components/CrugeUtil.php

 		return Yii::app()->createUrl('/'.self::config()->id.'/ui/'.$actionName,$params);
 	}
 	public static function passwordGenerator(){
-		return substr(md5(rand().rand()), 0, 8);
+		return substr(self::hash(rand().rand()), 0, 8);
 	}
 	
 	/* normaliza el nombre de la tabla anexandole el prefijo y aplicando mapping
 		}
 		return $ar;
 	}
+
+    /**
+     * Devuelve el hash del valor en el parĂĄmetro $value
+     * @param $value
+     * @return string
+     */
+    public static function hash($value){
+        $algo = self::config()->hash;
+        return hash($algo, $value);
+    }
 	
 }

models/auth/CrugeAuthDefault.php

 
 	private function _getPwd(){
 		if(CrugeUtil::config()->useEncryptedPassword == true)
-			return md5($this->password);
+			return CrugeUtil::hash($this->password);
 		return $this->password;
 	}
 
 			else{
 				if(CrugeUtil::config()->debug == true){
 					// ayuda a instalar, quiza el usuario olvide quitar la encriptacion de claves
-					// y reciba error de ERROR_PASSWORD_INVALID, es porque esta actuando el MD5
+					// y reciba error de ERROR_PASSWORD_INVALID, es porque esta actuando el Hash
 					// y el usuario recien creado trae una clave no encritpada
 					if(CrugeUtil::config()->useEncryptedPassword == true){
 						echo Yii::app()->user->ui->setupAlert(