MediaWiki  1.34.0
ParameterizedPassword.php
Go to the documentation of this file.
1 <?php
38 abstract class ParameterizedPassword extends Password {
43  protected $params = [];
44 
50  protected $args = [];
51 
52  protected function parseHash( $hash ) {
53  parent::parseHash( $hash );
54 
55  if ( $hash === null ) {
56  $this->params = $this->getDefaultParams();
57  return;
58  }
59 
60  $parts = explode( $this->getDelimiter(), $hash );
61  $paramKeys = array_keys( $this->getDefaultParams() );
62 
63  if ( count( $parts ) < count( $paramKeys ) ) {
64  throw new PasswordError( 'Hash is missing required parameters.' );
65  }
66 
67  if ( $paramKeys ) {
68  $this->args = array_splice( $parts, count( $paramKeys ) );
69  $this->params = array_combine( $paramKeys, $parts );
70  } else {
71  $this->args = $parts;
72  }
73 
74  if ( $this->args ) {
75  $this->hash = array_pop( $this->args );
76  } else {
77  $this->hash = null;
78  }
79  }
80 
81  public function needsUpdate() {
82  return $this->params !== $this->getDefaultParams();
83  }
84 
85  public function toString() {
86  $str = ':' . $this->config['type'] . ':';
87 
88  if ( count( $this->params ) || count( $this->args ) ) {
89  $str .= implode( $this->getDelimiter(), array_merge( $this->params, $this->args ) );
90  $str .= $this->getDelimiter();
91  }
92 
93  $res = $str . $this->hash;
94  $this->assertIsSafeSize( $res );
95  return $res;
96  }
97 
103  abstract protected function getDelimiter();
104 
120  abstract protected function getDefaultParams();
121 }
ParameterizedPassword\toString
toString()
Convert this hash to a string that can be stored in the database.
Definition: ParameterizedPassword.php:85
ParameterizedPassword\parseHash
parseHash( $hash)
Perform any parsing necessary on the hash to see if the hash is valid and/or to perform logic for see...
Definition: ParameterizedPassword.php:52
ParameterizedPassword\getDelimiter
getDelimiter()
Returns the delimiter for the parameters inside the hash.
PasswordError
Show an error when any operation involving passwords fails to run.
Definition: PasswordError.php:26
ParameterizedPassword\$params
array $params
Named parameters that have default values for this password type.
Definition: ParameterizedPassword.php:43
$res
$res
Definition: testCompression.php:52
Password\assertIsSafeSize
assertIsSafeSize( $hash)
Assert that hash will fit in a tinyblob field.
Definition: Password.php:218
Password\$hash
string $hash
String representation of the hash without the type.
Definition: Password.php:71
ParameterizedPassword\getDefaultParams
getDefaultParams()
Return an ordered array of default parameters for this password hash.
ParameterizedPassword\needsUpdate
needsUpdate()
Determine if the hash needs to be updated.
Definition: ParameterizedPassword.php:81
ParameterizedPassword
Helper class for password hash types that have a delimited set of parameters inside of the hash.
Definition: ParameterizedPassword.php:38
Password
Represents a password hash for use in authentication.
Definition: Password.php:61
ParameterizedPassword\$args
array $args
Extra arguments that were found in the hash.
Definition: ParameterizedPassword.php:50