[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/repository/storage/ -> PhabricatorRepositoryVCSPassword.php (source)

   1  <?php
   2  
   3  final class PhabricatorRepositoryVCSPassword extends PhabricatorRepositoryDAO {
   4  
   5    protected $id;
   6    protected $userPHID;
   7    protected $passwordHash;
   8  
   9    public function getConfiguration() {
  10      return array(
  11        self::CONFIG_COLUMN_SCHEMA => array(
  12          'passwordHash' => 'text128',
  13        ),
  14        self::CONFIG_KEY_SCHEMA => array(
  15          'key_phid' => array(
  16            'columns' => array('userPHID'),
  17            'unique' => true,
  18          ),
  19        ),
  20      ) + parent::getConfiguration();
  21    }
  22  
  23    public function setPassword(
  24      PhutilOpaqueEnvelope $password,
  25      PhabricatorUser $user) {
  26      $hash_envelope = $this->hashPassword($password, $user);
  27      return $this->setPasswordHash($hash_envelope->openEnvelope());
  28    }
  29  
  30    public function comparePassword(
  31      PhutilOpaqueEnvelope $password,
  32      PhabricatorUser $user) {
  33  
  34      return PhabricatorPasswordHasher::comparePassword(
  35        $this->getPasswordHashInput($password, $user),
  36        new PhutilOpaqueEnvelope($this->getPasswordHash()));
  37    }
  38  
  39    private function getPasswordHashInput(
  40      PhutilOpaqueEnvelope $password,
  41      PhabricatorUser $user) {
  42      if ($user->getPHID() != $this->getUserPHID()) {
  43        throw new Exception('User does not match password user PHID!');
  44      }
  45  
  46      $raw_input = PhabricatorHash::digestPassword($password, $user->getPHID());
  47      return new PhutilOpaqueEnvelope($raw_input);
  48    }
  49  
  50    private function hashPassword(
  51      PhutilOpaqueEnvelope $password,
  52      PhabricatorUser $user) {
  53  
  54      $input_envelope = $this->getPasswordHashInput($password, $user);
  55  
  56      $best_hasher = PhabricatorPasswordHasher::getBestHasher();
  57      return $best_hasher->getPasswordHashForStorage($input_envelope);
  58    }
  59  
  60  }


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1