original_string: protected function afterAuthorization(Result $result, $lastAuthorizer = null)
      {
          try {
              $select = $this->db->select();
              $select->from('gems__user_login_attempts', array('gula_failed_logins', 'gula_last_failed', 'gula_block_until', new \Zend_Db_Expr('UNIX_TIMESTAMP() - UNIX_TIMESTAMP(gula_last_failed) AS since_last')))
                      ->where('gula_login = ?', $this->getLoginName())
                      ->where('gula_id_organization = ?', $this->getCurrentOrganizationId())
                      ->limit(1);
  
              $values = $this->db->fetchRow($select);
  
              // The first login attempt
              if (! $values) {
                  $values['gula_login']           = $this->getLoginName();
                  $values['gula_id_organization'] = $this->getCurrentOrganizationId();
                  $values['gula_failed_logins']   = 0;
                  $values['gula_last_failed']     = null;
                  $values['gula_block_until']     = null;
                  $values['since_last']           = $this->failureIgnoreTime + 1;
              }
  
              if ($result->isValid()) {
                  // Reset login failures
                  $values['gula_failed_logins']   = 0;
                  $values['gula_last_failed']     = null;
                  $values['gula_block_until']     = null;
  
              } else {
  
                  // Reset the counters when the last login was longer ago than the delay factor
                  if ($values['since_last'] > $this->failureIgnoreTime) {
                      $values['gula_failed_logins'] = 1;
                  } elseif ($lastAuthorizer === 'pwd') {
                      // Only increment failed login when password failed
                      $values['gula_failed_logins'] += 1;
                  }
  
                  // If block is already set
                  if ($values['gula_block_until']) {
                      // Do not change it anymore
                      unset($values['gula_block_until']);
  
                  } else {
                      // Only set the block when needed
                      if ($this->failureBlockCount <= $values['gula_failed_logins']) {
                          $values['gula_block_until'] = new \Zend_Db_Expr('DATE_ADD(CURRENT_TIMESTAMP, INTERVAL ' . $this->failureIgnoreTime . ' SECOND)');
                      }
                  }
  
                  // Always record the last fail
                  $values['gula_last_failed']     = new \MUtil_Db_Expr_CurrentTimestamp();
                  $values['gula_failed_logins']   = max(1, $values['gula_failed_logins']);
  
                  // Response gets slowly slower
                  $sleepTime = min($values['gula_failed_logins'] - 1, 10) * 2;
                  sleep($sleepTime);
                  // \MUtil_Echo::track($sleepTime, $values, $result->getMessages());
              }
  
              // Value not saveable
              unset($values['since_last']);
  
              if (isset($values['gula_login'])) {
                  $this->db->insert('gems__user_login_attempts', $values);
              } else {
                  $where = $this->db->quoteInto('gula_login = ? AND ', $this->getLoginName());
                  $where .= $this->db->quoteInto('gula_id_organization = ?', $this->getCurrentOrganizationId());
                  $this->db->update('gems__user_login_attempts', $values, $where);
              }
  
          } catch (\Zend_Db_Exception $e) {
              // Fall through as this does not work if the database upgrade did not yet run
              // \MUtil_Echo::r($e);
          }
  
      }
code: protected function afterAuthorization(Result $result, $lastAuthorizer = null)
      {
          try {
              $select = $this->db->select();
              $select->from('gems__user_login_attempts', array('gula_failed_logins', 'gula_last_failed', 'gula_block_until', new \Zend_Db_Expr('UNIX_TIMESTAMP() - UNIX_TIMESTAMP(gula_last_failed) AS since_last')))
                      ->where('gula_login = ?', $this->getLoginName())
                      ->where('gula_id_organization = ?', $this->getCurrentOrganizationId())
                      ->limit(1);
  
              $values = $this->db->fetchRow($select);
  
              // The first login attempt
              if (! $values) {
                  $values['gula_login']           = $this->getLoginName();
                  $values['gula_id_organization'] = $this->getCurrentOrganizationId();
                  $values['gula_failed_logins']   = 0;
                  $values['gula_last_failed']     = null;
                  $values['gula_block_until']     = null;
                  $values['since_last']           = $this->failureIgnoreTime + 1;
              }
  
              if ($result->isValid()) {
                  // Reset login failures
                  $values['gula_failed_logins']   = 0;
                  $values['gula_last_failed']     = null;
                  $values['gula_block_until']     = null;
  
              } else {
  
                  // Reset the counters when the last login was longer ago than the delay factor
                  if ($values['since_last'] > $this->failureIgnoreTime) {
                      $values['gula_failed_logins'] = 1;
                  } elseif ($lastAuthorizer === 'pwd') {
                      // Only increment failed login when password failed
                      $values['gula_failed_logins'] += 1;
                  }
  
                  // If block is already set
                  if ($values['gula_block_until']) {
                      // Do not change it anymore
                      unset($values['gula_block_until']);
  
                  } else {
                      // Only set the block when needed
                      if ($this->failureBlockCount <= $values['gula_failed_logins']) {
                          $values['gula_block_until'] = new \Zend_Db_Expr('DATE_ADD(CURRENT_TIMESTAMP, INTERVAL ' . $this->failureIgnoreTime . ' SECOND)');
                      }
                  }
  
                  // Always record the last fail
                  $values['gula_last_failed']     = new \MUtil_Db_Expr_CurrentTimestamp();
                  $values['gula_failed_logins']   = max(1, $values['gula_failed_logins']);
  
                  // Response gets slowly slower
                  $sleepTime = min($values['gula_failed_logins'] - 1, 10) * 2;
                  sleep($sleepTime);
                  // \MUtil_Echo::track($sleepTime, $values, $result->getMessages());
              }
  
              // Value not saveable
              unset($values['since_last']);
  
              if (isset($values['gula_login'])) {
                  $this->db->insert('gems__user_login_attempts', $values);
              } else {
                  $where = $this->db->quoteInto('gula_login = ? AND ', $this->getLoginName());
                  $where .= $this->db->quoteInto('gula_id_organization = ?', $this->getCurrentOrganizationId());
                  $this->db->update('gems__user_login_attempts', $values, $where);
              }
  
          } catch (\Zend_Db_Exception $e) {
              // Fall through as this does not work if the database upgrade did not yet run
              // \MUtil_Echo::r($e);
          }
  
      }
code_tokens: protected function afterAuthorization ( Result $ result , $ lastAuthorizer = null ) { try { $ select = $ this -> db -> select ( ) ; $ select -> from ( 'gems__user_login_attempts' , array ( 'gula_failed_logins' , 'gula_last_failed' , 'gula_block_until' , new \ Zend_Db_Expr ( 'UNIX_TIMESTAMP() - UNIX_TIMESTAMP(gula_last_failed) AS since_last' ) ) ) -> where ( 'gula_login = ?' , $ this -> getLoginName ( ) ) -> where ( 'gula_id_organization = ?' , $ this -> getCurrentOrganizationId ( ) ) -> limit ( 1 ) ; $ values = $ this -> db -> fetchRow ( $ select ) ; // The first login attempt if ( ! $ values ) { $ values [ 'gula_login' ] = $ this -> getLoginName ( ) ; $ values [ 'gula_id_organization' ] = $ this -> getCurrentOrganizationId ( ) ; $ values [ 'gula_failed_logins' ] = 0 ; $ values [ 'gula_last_failed' ] = null ; $ values [ 'gula_block_until' ] = null ; $ values [ 'since_last' ] = $ this -> failureIgnoreTime + 1 ; } if ( $ result -> isValid ( ) ) { // Reset login failures $ values [ 'gula_failed_logins' ] = 0 ; $ values [ 'gula_last_failed' ] = null ; $ values [ 'gula_block_until' ] = null ; } else { // Reset the counters when the last login was longer ago than the delay factor if ( $ values [ 'since_last' ] > $ this -> failureIgnoreTime ) { $ values [ 'gula_failed_logins' ] = 1 ; } elseif ( $ lastAuthorizer === 'pwd' ) { // Only increment failed login when password failed $ values [ 'gula_failed_logins' ] += 1 ; } // If block is already set if ( $ values [ 'gula_block_until' ] ) { // Do not change it anymore unset ( $ values [ 'gula_block_until' ] ) ; } else { // Only set the block when needed if ( $ this -> failureBlockCount <= $ values [ 'gula_failed_logins' ] ) { $ values [ 'gula_block_until' ] = new \ Zend_Db_Expr ( 'DATE_ADD(CURRENT_TIMESTAMP, INTERVAL ' . $ this -> failureIgnoreTime . ' SECOND)' ) ; } } // Always record the last fail $ values [ 'gula_last_failed' ] = new \ MUtil_Db_Expr_CurrentTimestamp ( ) ; $ values [ 'gula_failed_logins' ] = max ( 1 , $ values [ 'gula_failed_logins' ] ) ; // Response gets slowly slower $ sleepTime = min ( $ values [ 'gula_failed_logins' ] - 1 , 10 ) * 2 ; sleep ( $ sleepTime ) ; // \MUtil_Echo::track($sleepTime, $values, $result->getMessages()); } // Value not saveable unset ( $ values [ 'since_last' ] ) ; if ( isset ( $ values [ 'gula_login' ] ) ) { $ this -> db -> insert ( 'gems__user_login_attempts' , $ values ) ; } else { $ where = $ this -> db -> quoteInto ( 'gula_login = ? AND ' , $ this -> getLoginName ( ) ) ; $ where .= $ this -> db -> quoteInto ( 'gula_id_organization = ?' , $ this -> getCurrentOrganizationId ( ) ) ; $ this -> db -> update ( 'gems__user_login_attempts' , $ values , $ where ) ; } } catch ( \ Zend_Db_Exception $ e ) { // Fall through as this does not work if the database upgrade did not yet run // \MUtil_Echo::r($e); } }
docstring: Process everything after authentication.
  
  @param Zend\Authentication\Result $result
docstring_tokens: Process everything after authentication .