public function findByCredentials(array $credentials)
{
if (empty($credentials)) {
return;
}
$instance = $this->createModel();
$loginNames = $instance->getLoginNames();
list($logins, $password, $credentials) = $this->parseCredentials($credentials, $loginNames);
if (empty($logins)) {
return;
}
$query = $instance->newQuery();
if (is_array($logins)) {
foreach ($logins as $key => $value) {
$query->where($key, $value);
}
} else {
$query->whereNested(function ($query) use($loginNames, $logins) {
foreach ($loginNames as $name) {
$query->orWhere($name, $logins);
}
});
}
return $query->first();
}