recordFailure static method
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;
}
}