src/Security/Member.php
public function isLockedOut()
    {
        /** @var DBDatetime $lockedOutUntilObj */
        $lockedOutUntilObj = $this->dbObject('LockedOutUntil');
        if ($lockedOutUntilObj->InFuture()) {
            return true;
        }

        $maxAttempts = $this->config()->get('lock_out_after_incorrect_logins');
        if ($maxAttempts <= 0) {
            return false;
        }

        $idField = static::config()->get('unique_identifier_field');
        $attempts = LoginAttempt::getByEmail($this->{$idField})
            ->sort('Created', 'DESC')
            ->limit($maxAttempts);

        if ($attempts->count() < $maxAttempts) {
            return false;
        }

        foreach ($attempts as $attempt) {
            if ($attempt->Status === 'Success') {
                return false;
            }
        }

        // Calculate effective LockedOutUntil
        /** @var DBDatetime $firstFailureDate */
        $firstFailureDate = $attempts->first()->dbObject('Created');
        $maxAgeSeconds = $this->config()->get('lock_out_delay_mins') * 60;
        $lockedOutUntil = $firstFailureDate->getTimestamp() + $maxAgeSeconds;
        $now = DBDatetime::now()->getTimestamp();
        if ($now < $lockedOutUntil) {
            return true;
        }

        return false;
    }
public function isLockedOut()
    {
        /** @var DBDatetime $lockedOutUntilObj */
        $lockedOutUntilObj = $this->dbObject('LockedOutUntil');
        if ($lockedOutUntilObj->InFuture()) {
            return true;
        }

        $maxAttempts = $this->config()->get('lock_out_after_incorrect_logins');
        if ($maxAttempts <= 0) {
            return false;
        }

        $idField = static::config()->get('unique_identifier_field');
        $attempts = LoginAttempt::getByEmail($this->{$idField})
            ->sort('Created', 'DESC')
            ->limit($maxAttempts);

        if ($attempts->count() < $maxAttempts) {
            return false;
        }

        foreach ($attempts as $attempt) {
            if ($attempt->Status === 'Success') {
                return false;
            }
        }

        // Calculate effective LockedOutUntil
        /** @var DBDatetime $firstFailureDate */
        $firstFailureDate = $attempts->first()->dbObject('Created');
        $maxAgeSeconds = $this->config()->get('lock_out_delay_mins') * 60;
        $lockedOutUntil = $firstFailureDate->getTimestamp() + $maxAgeSeconds;
        $now = DBDatetime::now()->getTimestamp();
        if ($now < $lockedOutUntil) {
            return true;
        }

        return false;
    }
public function isLockedOut ( ) { /** @var DBDatetime $lockedOutUntilObj */ $ lockedOutUntilObj = $ this -> dbObject ( 'LockedOutUntil' ) ; if ( $ lockedOutUntilObj -> InFuture ( ) ) { return true ; } $ maxAttempts = $ this -> config ( ) -> get ( 'lock_out_after_incorrect_logins' ) ; if ( $ maxAttempts <= 0 ) { return false ; } $ idField = static :: config ( ) -> get ( 'unique_identifier_field' ) ; $ attempts = LoginAttempt :: getByEmail ( $ this -> { $ idField } ) -> sort ( 'Created' , 'DESC' ) -> limit ( $ maxAttempts ) ; if ( $ attempts -> count ( ) < $ maxAttempts ) { return false ; } foreach ( $ attempts as $ attempt ) { if ( $ attempt -> Status === 'Success' ) { return false ; } } // Calculate effective LockedOutUntil /** @var DBDatetime $firstFailureDate */ $ firstFailureDate = $ attempts -> first ( ) -> dbObject ( 'Created' ) ; $ maxAgeSeconds = $ this -> config ( ) -> get ( 'lock_out_delay_mins' ) * 60 ; $ lockedOutUntil = $ firstFailureDate -> getTimestamp ( ) + $ maxAgeSeconds ; $ now = DBDatetime :: now ( ) -> getTimestamp ( ) ; if ( $ now < $ lockedOutUntil ) { return true ; } return false ; }
Returns true if this user is locked out

@skipUpgrade
@return bool
Returns true if this user is locked out