Исправлено поведение TOTP валидатора, если Closure для timestamp возвращает null

This commit is contained in:
ErickSkrauch 2017-02-23 02:18:25 +03:00
parent 689919fc17
commit 40239b4ee5
2 changed files with 14 additions and 6 deletions

View File

@ -57,15 +57,16 @@ class TotpValidator extends Validator {
}
private function getTimestamp(): ?int {
if ($this->timestamp === null) {
$timestamp = $this->timestamp;
if (is_callable($timestamp)) {
$timestamp = call_user_func($this->timestamp);
}
if ($timestamp === null) {
return null;
}
if (is_callable($this->timestamp)) {
return (int)call_user_func($this->timestamp);
}
return (int)$this->timestamp;
return (int)$timestamp;
}
}

View File

@ -39,6 +39,13 @@ class TotpValidatorTest extends TestCase {
$result = $this->callProtected($validator, 'validateValue', $controlTotp->at($at));
$this->assertNull($result);
$at = function() {
return null;
};
$validator->timestamp = $at;
$result = $this->callProtected($validator, 'validateValue', $controlTotp->now());
$this->assertNull($result);
$at = function() {
return time() - 700;
};