diff --git a/rbac/engine/classes/model/RbacUsers.php b/rbac/engine/classes/model/RbacUsers.php index 7caaee79d..985d063fb 100755 --- a/rbac/engine/classes/model/RbacUsers.php +++ b/rbac/engine/classes/model/RbacUsers.php @@ -1,4 +1,5 @@ - * access public - * Function verifyLogin - * - * @param string $strUser UserId (login) de usuario - * @param string $strPass Password - * @return - * -1: no existe usuario - * -2: password errado - * -3: usuario inactivo - * -4: usuario vencido - * n : uid de usuario - */ - function verifyLogin($sUsername, $sPassword ) - { - //invalid user - if ( $sUsername == '' ) return -1; +class RbacUsers extends BaseRbacUsers +{ - //invalid password - if ( $sPassword == '' ) return -2; - - $con = Propel::getConnection(RbacUsersPeer::DATABASE_NAME); - try { - $c = new Criteria( 'rbac' ); - $c->add ( RbacUsersPeer::USR_USERNAME, $sUsername ); - $rs = RbacUsersPeer::doSelect( $c ); - if ( is_array($rs) && isset( $rs[0] ) && is_object($rs[0]) && get_class ( $rs[0] ) == 'RbacUsers' ) { - $aFields = $rs[0]->toArray(BasePeer::TYPE_FIELDNAME); - //verify password with md5, and md5 format - //if ( $aFields['USR_PASSWORD'] == md5 ($sPassword ) ) { - if (mb_strtoupper($sUsername, 'utf-8') === mb_strtoupper($aFields['USR_USERNAME'], 'utf-8')) { - if ( $aFields['USR_PASSWORD'] == md5 ($sPassword ) || 'md5:'.$aFields['USR_PASSWORD'] === $sPassword) { - if ($aFields['USR_DUE_DATE'] < date('Y-m-d') ) { - return -4; - } - if ($aFields['USR_STATUS'] != 1 ) { - return -3; - } - return $aFields['USR_UID']; - } else { - return -2; - } - } else { + /** + * Autentificacion de un usuario a traves de la clase RBAC_user + * + * verifica que un usuario tiene derechos de iniciar una aplicacion + * + * @author Fernando Ontiveros Lira + * access public + * Function verifyLogin + * + * @param string $strUser UserId (login) de usuario + * @param string $strPass Password + * @return + * -1: no existe usuario + * -2: password errado + * -3: usuario inactivo + * -4: usuario vencido + * n : uid de usuario + */ + public function verifyLogin($sUsername, $sPassword) + { + //invalid user + if ($sUsername == '') { return -1; } - } else { - return -1; - } - } - catch (Exception $oError) { - throw($oError); - } - return -1; - } - - function verifyUser($sUsername) - { - //invalid user - if ( $sUsername == '' ) return 0; - $con = Propel::getConnection(RbacUsersPeer::DATABASE_NAME); - try { - $c = new Criteria( 'rbac' ); - $c->add ( RbacUsersPeer::USR_USERNAME, $sUsername ); - $rs = RbacUsersPeer::doSelect( $c ); - if (is_array($rs) && isset( $rs[0] ) && is_object($rs[0]) && get_class ( $rs[0] ) == 'RbacUsers') - { - //return the row for futher check of which Autentificacion method belongs this user - $this->fields = $rs[0]->toArray(BasePeer::TYPE_FIELDNAME);; - return 1; - } - else - { - return 0; - } - } - catch (Exception $oError) { - throw($oError); - } - } - - function getByUsername($sUsername) - { - //invalid user - if ( $sUsername == '' ) return 0; - $con = Propel::getConnection(RbacUsersPeer::DATABASE_NAME); - try { - $c = new Criteria( 'rbac' ); - $c->add ( RbacUsersPeer::USR_USERNAME, $sUsername ); - $rs = RbacUsersPeer::doSelect( $c ); - - if ( is_array($rs) && isset( $rs[0] ) && is_object($rs[0]) && get_class ( $rs[0] ) == 'RbacUsers' ) { - $aFields = $rs[0]->toArray(BasePeer::TYPE_FIELDNAME); - return $aFields; - } else { - return false; - } - } - catch (Exception $oError) { - throw($oError); - } - } - - function verifyUserId($sUserId) - { - //invalid user - if ( $sUserId == '' ) return 0; - $con = Propel::getConnection(RbacUsersPeer::DATABASE_NAME); - try { - $c = new Criteria( 'rbac' ); - $c->add ( RbacUsersPeer::USR_UID, $sUserId ); - $rs = RbacUsersPeer::doSelect( $c ); - if (is_array($rs) && isset( $rs[0] ) && is_object($rs[0]) && get_class ( $rs[0] ) == 'RbacUsers') - { - return 1; - } - else - { - return 0; - } - } - catch (Exception $oError) { - throw($oError); - } - } - - function load($sUsrUid) - { - $con = Propel::getConnection(RbacUsersPeer::DATABASE_NAME); - try { - $c = new Criteria( 'rbac' ); - $c->add ( RbacUsersPeer::USR_UID, $sUsrUid ); - $rs = RbacUsersPeer::doSelect( $c ); - if ( is_array($rs) && isset( $rs[0] ) && is_object($rs[0]) && get_class ( $rs[0] ) == 'RbacUsers' ) { - $aFields = $rs[0]->toArray(BasePeer::TYPE_FIELDNAME); - return $aFields; - } - return false; - } - catch ( Exception $oError) { - throw($oError); - } - return $res; - } - - function create($aData) { - $oConnection = Propel::getConnection(RbacUsersPeer::DATABASE_NAME); - try { - $oRBACUsers = new RbacUsers(); - do { - $aData['USR_UID'] = G::generateUniqueID(); - } while ($oRBACUsers->load($aData['USR_UID'])); - $oRBACUsers->fromArray($aData, BasePeer::TYPE_FIELDNAME); - //if ($oRBACUsers->validate()) { - //$oConnection->begin(); - $iResult = $oRBACUsers->save(); - //$oConnection->commit(); - return $aData['USR_UID']; - /*} - else { - $sMessage = ''; - $aValidationFailures = $oRBACUsers->getValidationFailures(); - foreach($aValidationFailures as $oValidationFailure) { - $sMessage .= $oValidationFailure->getMessage() . '
'; + //invalid password + if ($sPassword == '') { + return -2; } - throw(new Exception('The registry cannot be created!
' . $sMessage)); - }*/ + $con = Propel::getConnection(RbacUsersPeer::DATABASE_NAME); + try { + $c = new Criteria('rbac'); + $c->add(RbacUsersPeer::USR_USERNAME, $sUsername); + $rs = RbacUsersPeer::doSelect($c); + if (is_array($rs) && isset($rs[0]) && is_object($rs[0]) && get_class($rs[0]) == 'RbacUsers') { + $aFields = $rs[0]->toArray(BasePeer::TYPE_FIELDNAME); + //verify password with md5, and md5 format + //if ( $aFields['USR_PASSWORD'] == md5 ($sPassword ) ) { + if (mb_strtoupper($sUsername, 'utf-8') === mb_strtoupper($aFields['USR_USERNAME'], 'utf-8')) { + if ($aFields['USR_PASSWORD'] == md5($sPassword) || + 'md5:' . $aFields['USR_PASSWORD'] === $sPassword) { + if ($aFields['USR_DUE_DATE'] < date('Y-m-d')) { + return -4; + } + if ($aFields['USR_STATUS'] != 1) { + return -3; + } + return $aFields['USR_UID']; + } else { + return -2; + } + } else { + return -1; + } + } else { + return -1; + } + } catch (Exception $oError) { + throw($oError); + } + return -1; } - catch (Exception $oError) { - $oConnection->rollback(); - throw($oError); - } - } - function update($aData) { - $oConnection = Propel::getConnection(RbacUsersPeer::DATABASE_NAME); - try { - $this->fromArray($aData, BasePeer::TYPE_FIELDNAME); - $this->setNew(false); - $iResult = $this->save(); + public function verifyUser($sUsername) + { + //invalid user + if ($sUsername == '') { + return 0; + } + $con = Propel::getConnection(RbacUsersPeer::DATABASE_NAME); + try { + $c = new Criteria('rbac'); + $c->add(RbacUsersPeer::USR_USERNAME, $sUsername); + $rs = RbacUsersPeer::doSelect($c); + if (is_array($rs) && isset($rs[0]) && is_object($rs[0]) && get_class($rs[0]) == 'RbacUsers') { + //return the row for futher check of which Autentificacion method belongs this user + $this->fields = $rs[0]->toArray(BasePeer::TYPE_FIELDNAME); + ; + return 1; + } else { + return 0; + } + } catch (Exception $oError) { + throw($oError); + } } - catch (Exception $oError) { - $oConnection->rollback(); - throw($oError); - } - } - function remove($sUserUID = '') { - $this->setUsrUid($sUserUID); - $this->delete(); - } - - //Added by Qennix at Feb 14th, 2011 - //Gets an associative array with total users by authentication sources - function getAllUsersByAuthSource(){ - $oCriteria = new Criteria('rbac'); - $oCriteria->addSelectColumn(RbacUsersPeer::UID_AUTH_SOURCE); - $oCriteria->addSelectColumn('COUNT(*) AS CNT'); - $oCriteria->add(RbacUsersPeer::USR_STATUS,'CLOSED',Criteria::NOT_EQUAL); - $oCriteria->addGroupByColumn(RbacUsersPeer::UID_AUTH_SOURCE); - $oDataset = RbacUsersPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - - $aAuth = Array(); - while ($oDataset->next()){ - $row = $oDataset->getRow(); - $aAuth[$row['UID_AUTH_SOURCE']] = $row['CNT']; - } - return $aAuth; - } - - //Returns all users with auth_source - function getListUsersByAuthSource($auth_source){ - $oCriteria = new Criteria('rbac'); - $oCriteria->addSelectColumn(RbacUsersPeer::USR_UID); - - if ($auth_source=='00000000000000000000000000000000'){ - $oCriteria->add( - $oCriteria->getNewCriterion(RbacUsersPeer::UID_AUTH_SOURCE,$auth_source, Criteria::EQUAL)->addOr( - $oCriteria->getNewCriterion(RbacUsersPeer::UID_AUTH_SOURCE,'', Criteria::EQUAL) - )); - }else{ - $oCriteria->add(RbacUsersPeer::UID_AUTH_SOURCE, $auth_source, Criteria::EQUAL); - } - $oCriteria->add(RbacUsersPeer::USR_STATUS,0,Criteria::NOT_EQUAL); - $oDataset = RbacUsersPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $aUsers = array(); - while($oDataset->next()){ - $row = $oDataset->getRow(); - $aUsers[] = $row['USR_UID']; - } - return $aUsers; - } + public function getByUsername($sUsername) + { + //invalid user + if ($sUsername == '') { + return 0; + } + $con = Propel::getConnection(RbacUsersPeer::DATABASE_NAME); + try { + $c = new Criteria('rbac'); + $c->add(RbacUsersPeer::USR_USERNAME, $sUsername); + $rs = RbacUsersPeer::doSelect($c); -} // Users + if (is_array($rs) && isset($rs[0]) && is_object($rs[0]) && get_class($rs[0]) == 'RbacUsers') { + $aFields = $rs[0]->toArray(BasePeer::TYPE_FIELDNAME); + return $aFields; + } else { + return false; + } + } catch (Exception $oError) { + throw($oError); + } + } + + public function verifyUserId($sUserId) + { + //invalid user + if ($sUserId == '') { + return 0; + } + $con = Propel::getConnection(RbacUsersPeer::DATABASE_NAME); + try { + $c = new Criteria('rbac'); + $c->add(RbacUsersPeer::USR_UID, $sUserId); + $rs = RbacUsersPeer::doSelect($c); + if (is_array($rs) && isset($rs[0]) && is_object($rs[0]) && get_class($rs[0]) == 'RbacUsers') { + return 1; + } else { + return 0; + } + } catch (Exception $oError) { + throw($oError); + } + } + + public function load($sUsrUid) + { + $con = Propel::getConnection(RbacUsersPeer::DATABASE_NAME); + try { + $c = new Criteria('rbac'); + $c->add(RbacUsersPeer::USR_UID, $sUsrUid); + $rs = RbacUsersPeer::doSelect($c); + if (is_array($rs) && isset($rs[0]) && is_object($rs[0]) && get_class($rs[0]) == 'RbacUsers') { + $aFields = $rs[0]->toArray(BasePeer::TYPE_FIELDNAME); + return $aFields; + } + return false; + } catch (Exception $oError) { + throw($oError); + } + return $res; + } + + public function create($aData) + { + $oConnection = Propel::getConnection(RbacUsersPeer::DATABASE_NAME); + try { + $oRBACUsers = new RbacUsers(); + do { + $aData['USR_UID'] = G::generateUniqueID(); + } while ($oRBACUsers->load($aData['USR_UID'])); + $oRBACUsers->fromArray($aData, BasePeer::TYPE_FIELDNAME); + //if ($oRBACUsers->validate()) { + //$oConnection->begin(); + $iResult = $oRBACUsers->save(); + //$oConnection->commit(); + return $aData['USR_UID']; + /* } + else { + $sMessage = ''; + $aValidationFailures = $oRBACUsers->getValidationFailures(); + foreach($aValidationFailures as $oValidationFailure) { + $sMessage .= $oValidationFailure->getMessage() . '
'; + } + throw(new Exception('The registry cannot be created!
' . $sMessage)); + } */ + } catch (Exception $oError) { + $oConnection->rollback(); + throw($oError); + } + } + + public function update($aData) + { + $oConnection = Propel::getConnection(RbacUsersPeer::DATABASE_NAME); + try { + $this->fromArray($aData, BasePeer::TYPE_FIELDNAME); + $this->setNew(false); + $iResult = $this->save(); + } catch (Exception $oError) { + $oConnection->rollback(); + throw($oError); + } + } + + public function remove($sUserUID = '') + { + $this->setUsrUid($sUserUID); + $this->delete(); + } + + //Added by Qennix at Feb 14th, 2011 + //Gets an associative array with total users by authentication sources + public function getAllUsersByAuthSource() + { + $oCriteria = new Criteria('rbac'); + $oCriteria->addSelectColumn(RbacUsersPeer::UID_AUTH_SOURCE); + $oCriteria->addSelectColumn('COUNT(*) AS CNT'); + $oCriteria->add(RbacUsersPeer::USR_STATUS, 'CLOSED', Criteria::NOT_EQUAL); + $oCriteria->addGroupByColumn(RbacUsersPeer::UID_AUTH_SOURCE); + $oDataset = RbacUsersPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + $aAuth = Array(); + while ($oDataset->next()) { + $row = $oDataset->getRow(); + $aAuth[$row['UID_AUTH_SOURCE']] = $row['CNT']; + } + return $aAuth; + } + + //Returns all users with auth_source + public function getListUsersByAuthSource($auth_source) + { + $oCriteria = new Criteria('rbac'); + $oCriteria->addSelectColumn(RbacUsersPeer::USR_UID); + + if ($auth_source == '00000000000000000000000000000000') { + $oCriteria->add( + $oCriteria->getNewCriterion(RbacUsersPeer::UID_AUTH_SOURCE, $auth_source, Criteria::EQUAL)->addOr( + $oCriteria->getNewCriterion(RbacUsersPeer::UID_AUTH_SOURCE, '', Criteria::EQUAL) + )); + } else { + $oCriteria->add(RbacUsersPeer::UID_AUTH_SOURCE, $auth_source, Criteria::EQUAL); + } + $oCriteria->add(RbacUsersPeer::USR_STATUS, 0, Criteria::NOT_EQUAL); + $oDataset = RbacUsersPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $aUsers = array(); + while ($oDataset->next()) { + $row = $oDataset->getRow(); + $aUsers[] = $row['USR_UID']; + } + return $aUsers; + } +} + +// Users