Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Repository/TfaAttempt.php
<?php

namespace XF\Repository;

use
XF\Mvc\Entity\Finder;
use
XF\Mvc\Entity\Repository;

class
TfaAttempt extends Repository
{
    public function
logFailedTfaAttempt($userId)
    {
       
$loginAttempt = $this->em->create('XF:TfaAttempt');
       
$loginAttempt->bulkSet([
           
'user_id' => $userId,
           
'attempt_date' => time()
        ]);
       
$loginAttempt->save();
    }

    public function
countTfaAttemptsSince($cutOff, $userId)
    {
        return
$this->db()->fetchOne("
            SELECT COUNT(*)
            FROM xf_tfa_attempt
            WHERE attempt_date >= ?
                AND user_id = ?
        "
, [$cutOff, $userId]);
    }

    public function
clearTfaAttempts($userId)
    {
       
/** @var Finder $finder */
       
$finder = $this->finder('XF:TfaAttempt');

       
$attempts = $finder->where('user_id', $userId)
            ->
fetch();

        foreach (
$attempts AS $attempt)
        {
           
$attempt->delete();
        }
    }

    public function
cleanUpTfaAttempts()
    {
       
$this->db()->delete('xf_tfa_attempt', 'attempt_date < ?', time() - 86400);
    }
}