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:
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user