* [MOD] Improved user migration handling.

* [MOD] All input strings are trimmed
This commit is contained in:
nuxsmin
2016-09-24 02:47:22 +02:00
committed by Rubén Domínguez
parent 08d290bba1
commit d1e91ca68c
7 changed files with 54 additions and 33 deletions

View File

@@ -1,7 +1,9 @@
=== ** v1.2.0.16 ===
* [MOD] Add dot to LDAP group name chack regex. Thanks to @davidpsc. Closes #280
* [FIX] Fixed user migration from 1.1
* [MOD] Add dot to LDAP group name chack regex. Thanks to @davidpsc. Closes #280
* [MOD] Improved user migration handling.
* [MOD] All input strings are trimmed
* [MOD] Update version
=== ** v1.2.0.15 ===

View File

@@ -1,7 +1,9 @@
=== ** v1.2.0.16 ===
* [MOD] Añadido punto a la expresión regular en la comprobación del nombre de grupo en LDAP. Gracias a @davidpsc. Closes #280
* [FIX] Corregida migración de usuario desde 1.1
* [MOD] Añadido punto a la expresión regular en la comprobación del nombre de grupo en LDAP. Gracias a @davidpsc. Closes #280
* [MOD] Mejorada la migración de usuarios
* [MOD] Todas las cadenas de entrada son recortadas sin espacios
* [MOD] Actualizada versión
=== ** v1.2.0.15 ===

View File

@@ -40,7 +40,7 @@ class Auth
* Autentificación de usuarios con LDAP.
*
* @param string $userLogin con el login del usuario
* @param string $userPass con la clave del usuario
* @param string $userPass con la clave del usuario
* @return int|bool Número de error o boolean
*/
public static function authUserLDAP($userLogin, $userPass)
@@ -153,27 +153,38 @@ class Auth
* se ejecuta el proceso para actualizar la clave.
*
* @param string $userLogin con el login del usuario
* @param string $userPass con la clave del usuario
* @param string $userPass con la clave del usuario
* @return bool
*/
public static function authUserMySQL($userLogin, $userPass)
{
if (UserMigrate::checkUserIsMigrate($userLogin)) {
if (!UserMigrate::migrateUser($userLogin, $userPass)) {
return false;
}
}
$query = 'SELECT user_login, user_pass, user_hashSalt '
$query = /** @lang SQL */
'SELECT user_login, '
. 'user_pass, '
. 'user_hashSalt, '
. 'BIN(user_isMigrate) AS user_isMigrate '
. 'FROM usrData '
. 'WHERE user_login = :login AND user_isMigrate = 0 LIMIT 1';
. 'WHERE user_login = :login LIMIT 1';
$data['login'] = $userLogin;
$queryRes = DB::getResults($query, __FUNCTION__, $data);
return ($queryRes !== false
&& $queryRes->user_pass == crypt($userPass, $queryRes->user_hashSalt));
if ($queryRes === false) {
return false;
}
$curHash = crypt($userPass, $queryRes->user_hashSalt);
if (($queryRes->user_isMigrate == 1
&& UserMigrate::migrateUser($userLogin, $userPass, $curHash))
|| $queryRes->user_pass === $curHash
){
return true;
// return self::authUserMySQL($userLogin, $userPass);
}
return false;
}
/**

View File

@@ -35,19 +35,19 @@ class DB
/**
* @var string
*/
static $txtError = '';
public static $txtError = '';
/**
* @var int
*/
static $numError = 0;
public static $numError = 0;
/**
* @var int
*/
static $lastNumRows = 0;
public static $lastNumRows = 0;
/**
* @var int
*/
static $lastId = null;
public static $lastId = null;
/**
* @var bool Resultado como array
*/
@@ -169,7 +169,7 @@ class DB
* @param $query string con la consulta a realizar
* @param $querySource string con el nombre de la función que realiza la consulta
* @param $data array con los datos de la consulta
* @return bool|array devuelve bool si hay un error. Devuelve array con el array de registros devueltos
* @return bool|array|object devuelve bool si hay un error. Devuelve array con el array de registros devueltos
*/
public static function getResults($query, $querySource, &$data = null)
{
@@ -246,9 +246,11 @@ class DB
return $queryRes;
}
// $queryRes->closeCursor();
$this->_numRows = count($this->_lastResult);
} else {
$this->_numRows = $queryRes->rowCount();
return (int)$queryRes->errorCode() === 0;
}
}
@@ -287,7 +289,7 @@ class DB
continue;
}
if ($param == 'blobcontent') {
if ($param === 'blobcontent') {
$sth->bindValue($param, $value, \PDO::PARAM_LOB);
} elseif (is_int($value)) {
// error_log("INT: " . $param . " -> " . $value);
@@ -309,7 +311,7 @@ class DB
return $sth;
} catch (\Exception $e) {
error_log("Exception: " . $e->getMessage());
error_log('Exception: ' . $e->getMessage());
throw new SPException(SPException::SP_CRITICAL, $e->getMessage(), $e->getCode());
}
}
@@ -344,10 +346,10 @@ class DB
if (!is_array($this->_stData)) {
$queryRes = $db->query($query);
$num = intval($queryRes->fetchColumn());
$num = (int)$queryRes->fetchColumn();
} else {
if ($queryRes = $this->prepareQueryData($query, true)) {
$num = intval($queryRes->fetchColumn());
$num = (int)$queryRes->fetchColumn();
}
}
@@ -355,7 +357,7 @@ class DB
return $num;
} catch (SPException $e) {
error_log("Exception: " . $e->getMessage());
error_log('Exception: ' . $e->getMessage());
throw new SPException(SPException::SP_CRITICAL, $e->getMessage(), $e->getCode());
}
}

View File

@@ -135,7 +135,7 @@ class Request
}
if (is_string($value)) {
return ($sanitize === true) ? Html::sanitize($value) : (string)$value;
return ($sanitize === true) ? trim(Html::sanitize($value)) : trim((string)$value);
}
}

View File

@@ -235,7 +235,7 @@ class Upgrade
return (Profile::migrateProfiles() && UserMigrate::migrateUsersGroup());
break;
case 12002:
return (UserMigrate::setMigrateUsers());
return UserMigrate::setMigrateUsers();
break;
default:
break;

View File

@@ -57,11 +57,12 @@ class UserMigrate
*
* @param string $userLogin con el login del usuario
* @param string $userPass con la clave del usuario
* @return bool
* @param string $hash con el hash de la clave actual
* @return bool Esta función actualiza la clave de un usuario que ha sido migrado desde phpPMS
*
* Esta función actualiza la clave de un usuario que ha sido migrado desde phpPMS
*/
public static function migrateUser($userLogin, $userPass)
public static function migrateUser($userLogin, $userPass, $hash = '')
{
$passdata = UserPass::makeUserPassHash($userPass);
@@ -73,18 +74,21 @@ class UserMigrate
. 'WHERE user_login = :login '
. 'AND user_isMigrate = 1 '
. 'AND (user_pass = SHA1(CONCAT(user_hashSalt,:passOld)) '
. 'OR user_pass = MD5(:passOldMd5)) LIMIT 1';
. 'OR user_pass = MD5(:passOldMd5) OR user_pass = :passCur) LIMIT 1';
$data['pass'] = $passdata['pass'];
$data['salt'] = $passdata['salt'];
$data['login'] = $userLogin;
$data['passOld'] = $userPass;
$data['passOldMd5'] = $userPass;
$data['passCur'] = $hash;
if (DB::getQuery($query, __FUNCTION__, $data) === false) {
return false;
}
$rows = DB::$lastNumRows;
$log = new Log(__FUNCTION__);
$log->addDescription(_('Usuario actualizado'));
$log->addDescription('Login: ' . $userLogin);
@@ -92,7 +96,7 @@ class UserMigrate
Email::sendEmail($log);
return true;
return $rows === 1;
}
/**
@@ -110,7 +114,7 @@ class UserMigrate
foreach ($queryRes as $user) {
if (!Groups::addUsersForGroup(array($user->user_groupId), $user->user_id)) {
Log::writeNewLog(_('Migrar Grupos'), sprintf('%s (%s)'), _('Error al migrar grupo del usuario'), $user->user_id);
Log::writeNewLog(_('Migrar Grupos'), sprintf('%s (%s)', _('Error al migrar grupo del usuario'), $user->user_id));
}
}