/** * Resolve user by identity * * @param string $identity * @param string|null $realm * @param string|null $password * @return \Zend\Authentication\Result */ public function resolve($identity, $realm = null, $password = null) { $qb = $this->connection->createQueryBuilder(); $qb->select(['*'])->from($this->options['table_name'])->where($this->options['identity_column'] . ' = ' . $qb->createPositionalParameter($identity)); $resultIdentities = $qb->execute()->fetchAll(); if (count($resultIdentities) < 1) { return Result::failureIdentityNotFound(); } else { if (false === $this->options['use_ambiguity_identity'] && count($resultIdentities) > 1) { return Result::failureIdentityAmbiguous(); } } $users = []; foreach ($resultIdentities as $identity) { $users[] = new User($identity[$this->options['identity_column']], $identity[$this->options['credential_column']], isset($this->options['roles_column']) ? $identity[$this->options['roles_column']] : [], isset($this->options['salt_column']) ? $identity[$this->options['salt_column']] : null); } return Result::success($users); }