mirror of
https://github.com/nuxsmin/sysPass.git
synced 2026-03-05 08:04:09 +01:00
* [MOD] Improved user migration handling.
* [MOD] All input strings are trimmed
This commit is contained in:
@@ -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 ===
|
||||
|
||||
@@ -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 ===
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -235,7 +235,7 @@ class Upgrade
|
||||
return (Profile::migrateProfiles() && UserMigrate::migrateUsersGroup());
|
||||
break;
|
||||
case 12002:
|
||||
return (UserMigrate::setMigrateUsers());
|
||||
return UserMigrate::setMigrateUsers();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user