Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
| 1 | <?php |
||
| 18 | class PhpbbPassword implements IPassword { |
||
| 19 | const ITOA64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; |
||
| 20 | |||
| 21 | /** |
||
| 22 | * Check for a correct password. |
||
| 23 | * |
||
| 24 | * @param string $password The password in plain text. |
||
| 25 | * @param string $hash The stored password hash. |
||
| 26 | * @return bool Returns true if the password is correct, false if not. |
||
| 27 | */ |
||
| 28 | 3 | public function verify($password, $hash) { |
|
| 35 | |||
| 36 | /** |
||
| 37 | * The crypt function/replacement. |
||
| 38 | * |
||
| 39 | * @param string $password The password to encrypt. |
||
| 40 | * @param string $setting The hash prefix setting. It should start with $H$. |
||
| 41 | * @return string The encypted password. |
||
| 42 | */ |
||
| 43 | 3 | private function cryptPrivate($password, $setting) { |
|
| 90 | |||
| 91 | /** |
||
| 92 | * Encode hash. |
||
| 93 | * |
||
| 94 | * @param string $input The input to encode. |
||
| 95 | * @param int $count The number of characters to encode. |
||
| 96 | * @return string The encoded string. |
||
| 97 | */ |
||
| 98 | 3 | protected function encode64($input, $count) { |
|
| 132 | |||
| 133 | /** |
||
| 134 | * Hashes a plaintext password. |
||
| 135 | * |
||
| 136 | * @param string $password The password to hash. |
||
| 137 | * @return string Returns the hashed password. |
||
| 138 | */ |
||
| 139 | 3 | public function hash($password) { |
|
| 149 | |||
| 150 | /** |
||
| 151 | * Generate a password salt based on the given input string. |
||
| 152 | * |
||
| 153 | * @param string $input The input string to generate the salt from. |
||
| 154 | * @return string Returns the password salt prefixed with `$P$`. |
||
| 155 | */ |
||
| 156 | 3 | private function gensaltPrivate($input) { |
|
| 165 | |||
| 166 | /** |
||
| 167 | * Checks if a given password hash needs to be re-hashed to to a stronger algorithm. |
||
| 168 | * |
||
| 169 | * @param string $hash The hash to check. |
||
| 170 | * @return bool Returns `true` |
||
| 171 | */ |
||
| 172 | 1 | public function needsRehash($hash) { |
|
| 175 | } |
||
| 176 |