You are here

private function SpiController::getFailedLogins in Acquia Connector 8.2

Same name and namespace in other branches
  1. 8 src/Controller/SpiController.php \Drupal\acquia_connector\Controller\SpiController::getFailedLogins()
  2. 3.x src/Controller/SpiController.php \Drupal\acquia_connector\Controller\SpiController::getFailedLogins()

Get the information on failed logins in the last cron interval.

Return value

array Array of last 10 failed logins.

1 call to SpiController::getFailedLogins()
SpiController::get in src/Controller/SpiController.php
Gather site profile information about this site.

File

src/Controller/SpiController.php, line 527

Class

SpiController
SPI Controller class.

Namespace

Drupal\acquia_connector\Controller

Code

private function getFailedLogins() {
  $last_logins = [];
  $cron_interval = $this
    ->config('acquia_connector.settings')
    ->get('spi.cron_interval');
  if ($this
    ->moduleHandler()
    ->moduleExists('dblog')) {
    $result = Database::getConnection()
      ->select('watchdog', 'w')
      ->fields('w', [
      'message',
      'variables',
      'timestamp',
    ])
      ->condition('w.message', 'login attempt failed%', 'LIKE')
      ->condition('w.timestamp', \Drupal::time()
      ->getRequestTime() - $cron_interval, '>')
      ->condition('w.message', [
      "UPGRADE.txt",
      "MAINTAINERS.txt",
      "README.txt",
      "INSTALL.pgsql.txt",
      "INSTALL.txt",
      "LICENSE.txt",
      "INSTALL.mysql.txt",
      "COPYRIGHT.txt",
      "CHANGELOG.txt",
    ], 'NOT IN')
      ->orderBy('w.timestamp', 'DESC')
      ->range(0, 10)
      ->execute();
    foreach ($result as $record) {
      $variables = unserialize($record->variables);
      if (!empty($variables['%user'])) {
        $last_logins['failed'][$record->timestamp] = Html::escape($variables['%user']);
      }
    }
  }
  return $last_logins;
}