protected function _validate($user, array $data)
{
foreach ($this->_validators as $field => $validator) {
if (!isset($this->_fields[$field]) || $field === 0) {
continue;
}
if (!is_callable($validator)) {
$message = "Authentication validator for `{$field}` is not callable.";
throw new UnexpectedValueException($message);
}
$field = $this->_fields[$field];
$value = isset($data[$field]) ? $data[$field] : null;
if (!call_user_func($validator, $value, $user->data($field))) {
return false;
}
}
$user = $user->data();
if (!isset($this->_validators[0])) {
return $user;
}
if (!is_callable($this->_validators[0])) {
throw new UnexpectedValueException("Authentication validator is not callable.");
}
return call_user_func($this->_validators[0], $data, $user) ? $user : false;
}