Skip to content

Commit

Permalink
* [MOD] Improved login when the webserver auth is used. Related #180
Browse files Browse the repository at this point in the history
  • Loading branch information
nuxsmin committed Dec 24, 2015
1 parent 03c7ebe commit 6ce7ade
Show file tree
Hide file tree
Showing 5 changed files with 162 additions and 102 deletions.
1 change: 1 addition & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
=== ** v1.2.0.10 ===

* [MOD] Improved login when the webserver auth is used.
* [MOD] Updated Russian translation. Thanks to @TitovLab
* [FIX] Fixed user id checking instead login when using webserver auth. Thanks to @TitovLab
* [FIX] Integer casting for boolean values on users management. Thanks to @maseht
Expand Down
3 changes: 2 additions & 1 deletion CHANGELOG-ES
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
=== ** v1.2.0.10 ===

* [ADD] Actualizada traducción al ruso. Gracias a @TitovLab
* [MOD] Mejorado el login cuando la autentificación del servidor web es usada.
* [MOD] Actualizada traducción al ruso. Gracias a @TitovLab
* [FIX] Corregida la comprobación del usuario cuando se usa la autentificación del servidor. Gracias a @TitovLab
* [FIX] Casting a entero desde booleano en gestion de usuarios. Gracias a @maseht
* [FIX] Corregido truncado de cadenas multibyte. Gracias a @TitovLab
Expand Down
29 changes: 20 additions & 9 deletions ajax/ajax_doLogin.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
*
*/

use SP\Auth;
use SP\CryptMasterPass;
use SP\Request;
use SP\SessionUtil;
Expand Down Expand Up @@ -63,7 +64,7 @@
// Autentificamos por LDAP
if ($resLdap === true) {
$Log->addDescription('(LDAP)');
$Log->addDescription(sprintf('%s : %s', _('Servidor Login'), \SP\Ldap::getLdapServer()));
$Log->addDescription(sprintf('%s: %s', _('Servidor Login'), \SP\Ldap::getLdapServer()));

// Verificamos si el usuario existe en la BBDD
if (!UserLdap::checkLDAPUserInDB($userLogin)) {
Expand All @@ -86,21 +87,21 @@
} else if ($resLdap == 49) {
$Log->addDescription('(LDAP)');
$Log->addDescription(_('Login incorrecto'));
$Log->addDescription(_('Usuario') . ": " . $userLogin);
$Log->addDescription(sprintf('%s: %s', _('Usuario'), $userLogin));
$Log->writeLog();

SP\Response::printJSON(_('Usuario/Clave incorrectos'));
} else if ($resLdap === 701) {
$Log->addDescription('(LDAP)');
$Log->addDescription(_('Cuenta expirada'));
$Log->addDescription(_('Usuario') . ": " . $userLogin);
$Log->addDescription(sprintf('%s: %s', _('Usuario'), $userLogin));
$Log->writeLog();

SP\Response::printJSON(_('Cuenta expirada'));
} else if ($resLdap === 702) {
$Log->addDescription('(LDAP)');
$Log->addDescription(_('El usuario no tiene grupos asociados'));
$Log->addDescription(_('Usuario') . ": " . $userLogin);
$Log->addDescription(sprintf('%s: %s', _('Usuario'), $userLogin));
$Log->writeLog();

SP\Response::printJSON(_('Usuario/Clave incorrectos'));
Expand All @@ -111,17 +112,27 @@
// Autentificamos con la BBDD
if (!SP\Auth::authUserMySQL($userLogin, $userPass)) {
$Log->addDescription(_('Login incorrecto'));
$Log->addDescription(_('Usuario') . ": " . $userLogin);
$Log->addDescription(sprintf('%s: %s', _('Usuario'), $userLogin));
$Log->writeLog();

SP\Response::printJSON(_('Usuario/Clave incorrectos'));
}
}

// Comprobar si concide el login con la autentificación del servidor web
if (!Auth::checkServerAuthUser($userLogin)){
$Log->addDescription(_('Login incorrecto'));
$Log->addDescription(sprintf('%s: %s', _('Usuario'), $userLogin));
$Log->addDescription(sprintf('%s: %s (%s)', _('Autentificación'), Auth::getServerAuthType(), Auth::getServerAuthUser()));
$Log->writeLog();

SP\Response::printJSON(_('Usuario/Clave incorrectos'));
}

// Comprobar si el usuario está deshabilitado
if (UserUtil::checkUserIsDisabled($userLogin)) {
$Log->addDescription(_('Usuario deshabilitado'));
$Log->addDescription(_('Usuario') . ": " . $userLogin);
$Log->addDescription(sprintf('%s: %s', _('Usuario'), $userLogin));
$Log->writeLog();

SP\Response::printJSON(_('Usuario deshabilitado'));
Expand Down Expand Up @@ -171,9 +182,9 @@
// Cargar las variables de sesión del usuario
SessionUtil::loadUserSession($User);

$Log->addDescription(sprintf('%s : %s', _('Usuario'), $userLogin));
$Log->addDescription(sprintf('%s : %s', _('Perfil'), SP\Profile::getProfileNameById($User->getUserProfileId())));
$Log->addDescription(sprintf('%s : %s', _('Grupo'), SP\Groups::getGroupNameById($User->getUserGroupId())));
$Log->addDescription(sprintf('%s: %s', _('Usuario'), $userLogin));
$Log->addDescription(sprintf('%s: %s', _('Perfil'), SP\Profile::getProfileNameById($User->getUserProfileId())));
$Log->addDescription(sprintf('%s: %s', _('Grupo'), SP\Groups::getGroupNameById($User->getUserGroupId())));
$Log->writeLog();
} else {
SP\Response::printJSON(_('Error interno'));
Expand Down
40 changes: 40 additions & 0 deletions inc/Auth.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -220,4 +220,44 @@ public static function checkAuthToken($actionId, $token)

return (DB::$lastNumRows === 1);
}

/**
* Comprobar si el usuario es autentificado por el servidor web
*
* @param $login string El login del usuario a comprobar
* @return bool
*/
public static function checkServerAuthUser($login)
{
if (isset($_SERVER['PHP_AUTH_USER']) || isset($_SERVER['REMOTE_USER'])) {
return self::getServerAuthUser() == $login;
}

return true;
}

/**
* Devuelve el typo de autentificación del servidor web
* @return string
*/
public static function getServerAuthType()
{
return strtoupper($_SERVER['AUTH_TYPE']);
}

/**
* Devolver el nombre del usuario autentificado por el servidor web
*
* @return string
*/
public static function getServerAuthUser()
{
if (isset($_SERVER['PHP_AUTH_USER'])) {
return $_SERVER['PHP_AUTH_USER'];
} elseif (isset($_SERVER['REMOTE_USER'])) {
return $_SERVER['REMOTE_USER'];
}

return '';
}
}
Loading

0 comments on commit 6ce7ade

Please sign in to comment.