示例#1
0
 /**
  * @param ServiceManager $serviceManager
  * @param AbstractEntity $entity
  * @param SimpleFMAdapter $simpleFMAdapter
  */
 public function __construct(AbstractEntity $entity, SimpleFMAdapter $simpleFMAdapter, Identity $identity = NULL, $encryptionKey = NULL)
 {
     $this->setSimpleFMAdapter($simpleFMAdapter);
     $this->setEntityName(get_class($entity));
     $this->setEntityLayout($entity->getDefaultWriteLayoutName());
     if (!empty($identity) && !empty($encryptionKey)) {
         $this->simpleFMAdapter->setUsername($identity->getUsername());
         $this->simpleFMAdapter->setPassword($identity->getPassword($encryptionKey));
     }
 }
示例#2
0
 /**
  * @return Zend\Authentication\Result
  */
 public function authenticate()
 {
     $this->simpleFmValidateAdapter->setLayoutname($this->identityLayout);
     $this->simpleFmValidateAdapter->setCredentials($this->credentials);
     $command = array($this->accountNameField => "==" . self::escapeStringForFileMakerSearch($this->username), '-find' => NULL);
     $this->simpleFmValidateAdapter->setCommandarray($command);
     $result = $this->simpleFmValidateAdapter->execute();
     $error = $result['error'];
     $errortext = $result['errortext'];
     $errortype = $result['errortype'];
     // Based on the status, return auth result
     switch ($error) {
         case '0':
             // Return null as identity only for error 0
             $identity = new Identity($this->username, $this->password, $this->encryptionKey, $result['rows'][0]);
             $identity->setIsLoggedIn(TRUE);
             return new Result(Result::SUCCESS, $identity);
         case '401':
             // Return null identity plus reason as message array for HTTP 401
             if ($errortype == 'HTTP') {
                 $identity = null;
                 return new Result(Result::FAILURE, $identity, array('reason' => 'Username and/or password not valid', 'sfm_auth_response' => $result));
             }
         case '7':
             // there most likely was a error connecting to the host
             if ($errortype == 'PHP') {
                 $identity = null;
                 return new Result(Result::FAILURE, $identity, array('reason' => 'There was a system error trying to make the request.  Please try again later.', 'sfm_auth_response' => $result));
             }
         default:
             // Return empty identity plus reason as message array for every other result status
             $identity = null;
             return new Result(Result::FAILURE, $identity, array('reason' => $errortype . ' error ' . $error . ': ' . $errortext, 'sfm_auth_response' => $result));
     }
 }