Example #1
0
 function authenticate(Adapter $adapter)
 {
     /*
      * Criando o auth adapter:  passando o primeiro parâmetro o
      * adaptador do banco de dados $zendDb segundo parâmetro a tabela de
      * usuarios terceiro parâmetro a coluna da tabela aonde está o login
      * quarto parâmetro a coluna da tabela aonde está a senha
      */
     $bcrypt = new Bcrypt();
     if ($bcrypt->verify($this->authPassword, $this->storedHash)) {
         $authAdapter = new DbTable($adapter, 'tb_user', 'email', 'password');
         /*
          * Seta o credential tratment:  tratamento da senha para ser
          * criptografada em md5 passado um parâmetro status para logar o
          * usuario que esteja ativo no sistema no caso dos parâmetros você
          * pode passar quantos forem necessários usando o AND na sequência
          * seta o Identity que é o login e Credential que é a senha
          */
         $authAdapter->setCredentialTreatment('? AND status = 1');
         $authAdapter->setIdentity($this->authEmail);
         $authAdapter->setCredential($this->storedHash);
         // Instanciando o AutenticationService para fazer a altenticação com
         // os dados passados para o authAdapter
         $authService = new AuthenticationService();
         // Autenticando o passando para a variável result o resultado da
         // autenticação
         $result = $authService->authenticate($authAdapter);
         // Validando a autenticação
         if ($result->isValid()) {
             // Se validou damos um get nos dados autenticados usando o
             // $result->getIdentity()
             $identity = $result->getIdentity();
             /*
              * Imprimindo os dados na tela para confirmar os dados
              * autenticados pronto, se aparecer os dados isso quer dizer que
              * o usuario está autenticado no sistema
              */
             // var_dump ( $identity );
             return true;
         } else {
             /*
              * Caso falhe a autenticação, será gerado o log abaixo que será
              * impresso  na tela do computador para você sabe do
              * problema ocorrido. os erros listados abaixo são os erros mais
              * comuns que podem ocorrer.
              */
             switch ($result->getCode()) {
                 case Result::FAILURE_IDENTITY_NOT_FOUND:
                     //echo "O email não existe";
                     break;
                 case Result::FAILURE_CREDENTIAL_INVALID:
                     //echo "A senha não confere";
                     break;
                 default:
                     foreach ($result->getMessages() as $message) {
                         //echo $message;
                     }
             }
             return false;
         }
     } else {
         //echo "A senha não confere";
         return false;
     }
 }