BUG-13661 A user is still able to login to ProcessMaker even... SOLVED

- Cuando se cambiaba el estado de un rol a inactivo cual quier persona con ese rol podia seguir logueandose.
- Cuando se creaba un usuario y se le ponia en estado inactivo se podia loguear.

- Se agrega la validacion del estado del rol en el archivo RbacUsers.php en la funcion verifyLogin donde retorna "-6" si el rol esta como inactivo.
- al crear un usuario se hacia una doble validacion para el estado, ahora solo se toma en cuenta la que esta en la class.rbac.php en la funcion createUser
This commit is contained in:
Marco Antonio Nina
2013-12-09 14:58:41 -04:00
parent 1a75c16ec8
commit a93126703c
3 changed files with 31 additions and 1 deletions

View File

@@ -59,6 +59,7 @@ class RbacUsers extends BaseRbacUsers
* -2: password errado
* -3: usuario inactivo
* -4: usuario vencido
* -6: role inactivo
* n : uid de usuario
*/
public function verifyLogin($sUsername, $sPassword)
@@ -89,6 +90,10 @@ class RbacUsers extends BaseRbacUsers
if ($aFields['USR_STATUS'] != 1) {
return -3;
}
$role = $this->verifyRolUser($aFields['USR_UID']);
if ($role['ROL_STATUS'] == 0) {
return -6;
}
return $aFields['USR_UID'];
} else {
return -2;
@@ -293,6 +298,28 @@ class RbacUsers extends BaseRbacUsers
}
return $aUsers;
}
public function verifyRolUser($UsrUid)
{
$con = Propel::getConnection(UsersRolesPeer::DATABASE_NAME);
try {
$c = new Criteria( 'rbac' );
$c->clearSelectColumns();
$c->addSelectColumn ( RolesPeer::ROL_UID );
$c->addSelectColumn ( RolesPeer::ROL_CODE );
$c->addSelectColumn ( RolesPeer::ROL_STATUS );
$c->addJoin ( UsersRolesPeer::ROL_UID, RolesPeer::ROL_UID );
$c->add ( UsersRolesPeer::USR_UID, $UsrUid );
$rs = UsersRolesPeer::doSelectRs( $c );
$rs->setFetchmode (ResultSet::FETCHMODE_ASSOC);
$rs->next();
$row = $rs->getRow();
return $row;
}
catch (Exception $oError) {
throw($oError);
}
}
}
// Users

View File

@@ -81,6 +81,9 @@ try {
case -5:
$errLabel = 'ID_AUTHENTICATION_SOURCE_INVALID';
break;
case -6:
$errLabel = 'ID_ROLE_INACTIVE';
break;
}
//to avoid empty string in user field. This will avoid a weird message "this row doesn't exist"

View File

@@ -160,7 +160,7 @@ switch ($_POST['action']) {
$aData['USR_AUTH_USER_DN'] = $form['USR_AUTH_USER_DN'];
//fixing bug in inactive user when the admin create a new user.
$statusWF = $form['USR_STATUS'];
$aData['USR_STATUS'] = $form['USR_STATUS'] == 'ACTIVE' ? 1 : 0;
$aData['USR_STATUS'] = $form['USR_STATUS'] ;//== 'ACTIVE' ? 1 : 0;
try {
$sUserUID = $RBAC->createUser($aData, $form['USR_ROLE']);
} catch(Exception $oError) {