recordFailure static method

void recordFailure(
  1. String realmUri,
  2. String authId,
  3. RealmLimitSettings limits
)

Implementation

static void recordFailure(
  String realmUri,
  String authId,
  RealmLimitSettings limits,
) {
  if (!_trackingEnabled(limits) || limits.maxFailedAuthRecords <= 0) {
    return;
  }
  final now = DateTime.now();
  _removeExpiredRecords(realmUri, now);
  var realmMap = _realmFailures[realmUri];
  if (realmMap == null) {
    realmMap = HashMap<String, _FailureRecord>();
    _realmFailures[realmUri] = realmMap;
  }
  final authIdKey = _authIdKey(authId);
  var record = realmMap[authIdKey];
  if (record == null) {
    if (realmMap.length >= limits.maxFailedAuthRecords) {
      return;
    }
    record = _FailureRecord(now);
    realmMap[authIdKey] = record;
  }

  final retainedUntil = now.add(Duration(milliseconds: limits.lockoutMs));
  record.count++;
  record.retainedUntil = retainedUntil;
  if (record.count >= limits.maxFailedAuth) {
    record.lockedUntil = retainedUntil;
    record.count = 0;
  }
}