MediaWiki REL1_34
ParameterizedPassword.php
Go to the documentation of this file.
1<?php
38abstract 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}
Helper class for password hash types that have a delimited set of parameters inside of the hash.
getDefaultParams()
Return an ordered array of default parameters for this password hash.
array $params
Named parameters that have default values for this password type.
array $args
Extra arguments that were found in the hash.
needsUpdate()
Determine if the hash needs to be updated.
toString()
Convert this hash to a string that can be stored in the database.
getDelimiter()
Returns the delimiter for the parameters inside the hash.
parseHash( $hash)
Perform any parsing necessary on the hash to see if the hash is valid and/or to perform logic for see...
Show an error when any operation involving passwords fails to run.
Represents a password hash for use in authentication.
Definition Password.php:61
assertIsSafeSize( $hash)
Assert that hash will fit in a tinyblob field.
Definition Password.php:218
string $hash
String representation of the hash without the type.
Definition Password.php:71