Exemplo n.º 1
0
 /**
  * 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);
 }