Cuando estamos trabajando con Vtiger, y importamos una base de datos pre-existente, y nos da un error y nos manda a una pagina en la
wiki de vtiger, la cual nos da las siguiente instrucciones:
- Copiamos el archivo ResetPassword.phpfile, que esta en modules/migration a la carpeta raiz
- Copiar la clave única de config.inc.php y lo copiamos a nuestro archivo.
- Renombranos el archivo ResetPassword.phpfile y no quedaría así ResetPassword.php
- Corremos el archivo en el buscador
- Borramos el archivo.
Y obtenemos el brillante resultado que no pasa nada, jajajaja. Vtiger tiene un gran problema, y es que falta mucha documentación y ayuda, para resolver el problema del que estamos hablando tenemos que reemplazar el contenido de ResetPassword.php por este:
<?php
require_once 'config.php';
require_once 'include/utils/utils.php';
resetUserPasswords();
function resetUserPasswords() {
$db = PearDatabase::getInstance();
$sql = 'select user_name, id, crypt_type from vtiger_users';
$result = $db->pquery($sql, array());
$rowList = $result->GetRows();
foreach ($rowList as $row) {
$cryptType = $row['crypt_type'];
if(strtolower($cryptType) == 'md5' && version_compare(PHP_VERSION, '5.3.0') >= 0) {
$cryptType = 'PHP5.3MD5';
}
$encryptedPassword = getEncryptedPassword($row['user_name'], $cryptType,
$row['user_name']);
$userId = $row['id'];
$sql = "update vtiger_users set user_password=?,crypt_type=? where id=?";
$updateResult = $db->pquery($sql, array($encryptedPassword, $cryptType, $userId));
if(!is_object($updateResult)) {
$_SESSION['migration_info']['user_messages'][] = "<div>".
"<span style='color: red;font-weight: bold;width: 30em;'>Failed: </span>".
"$sql<br />".var_export(array($encryptedPassword, $userId)).'</div>';
}
}
}
function getEncryptedPassword($userName, $cryptType, $userPassword) {
$salt = substr($userName, 0, 2);
// For more details on salt format look at: http://in.php.net/crypt
if($cryptType == 'MD5') {
$salt = '$1$' . $salt . '$';
} elseif($cryptType == 'BLOWFISH') {
$salt = '$2$' . $salt . '$';
} elseif($cryptType == 'PHP5.3MD5') {
//only change salt for php 5.3 or higher version for backward
//compactibility.
//crypt API is lot stricter in taking the value for salt.
$salt = '$1$' . str_pad($salt, 9, '0');
}
$computedEncryptedPassword = crypt($userPassword, $salt);
return $computedEncryptedPassword;
}
?>
Ya con esto se resetean las claves a el mismo nombre de usuario, si tienen algun problema pueden dejar un comentario.