Exemplo n.º 1
0
 /**
  * Update locking information for the user
  *
  * @param \Magento\User\Model\User $user
  * @return void
  */
 private function _updateLockingInformation($user)
 {
     $now = new \DateTime();
     $lockThreshold = $this->observerConfig->getAdminLockThreshold();
     $maxFailures = $this->observerConfig->getMaxFailures();
     if (!($lockThreshold && $maxFailures)) {
         return;
     }
     $failuresNum = (int) $user->getFailuresNum() + 1;
     /** @noinspection PhpAssignmentInConditionInspection */
     if ($firstFailureDate = $user->getFirstFailure()) {
         $firstFailureDate = new \DateTime($firstFailureDate);
     }
     $newFirstFailureDate = false;
     $updateLockExpires = false;
     $lockThreshInterval = new \DateInterval('PT' . $lockThreshold . 'S');
     // set first failure date when this is first failure or last first failure expired
     if (1 === $failuresNum || !$firstFailureDate || $now->diff($firstFailureDate) > $lockThreshInterval) {
         $newFirstFailureDate = $now;
         // otherwise lock user
     } elseif ($failuresNum >= $maxFailures) {
         $updateLockExpires = $now->add($lockThreshInterval);
     }
     $this->userResource->updateFailure($user, $updateLockExpires, $newFirstFailureDate);
 }