From a1789ddde42033f1b05cc4929491214ee6e79383 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Thu, 17 Dec 2015 09:15:42 +0100 Subject: Update to MediaWiki 1.26.0 --- includes/password/PasswordPolicyChecks.php | 115 +++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 includes/password/PasswordPolicyChecks.php (limited to 'includes/password/PasswordPolicyChecks.php') diff --git a/includes/password/PasswordPolicyChecks.php b/includes/password/PasswordPolicyChecks.php new file mode 100644 index 00000000..eb4a9582 --- /dev/null +++ b/includes/password/PasswordPolicyChecks.php @@ -0,0 +1,115 @@ + strlen( $password ) ) { + $status->error( 'passwordtooshort', $policyVal ); + } + return $status; + } + + /** + * Check password is longer than minimum, fatal + * @param int $policyVal minimal length + * @param User $user + * @param string $password + * @return Status fatal if $password is shorter than $policyVal + */ + public static function checkMinimumPasswordLengthToLogin( $policyVal, User $user, $password ) { + $status = Status::newGood(); + if ( $policyVal > strlen( $password ) ) { + $status->fatal( 'passwordtooshort', $policyVal ); + } + return $status; + } + + /** + * Check password is shorter than maximum, fatal + * @param int $policyVal maximum length + * @param User $user + * @param string $password + * @return Status fatal if $password is shorter than $policyVal + */ + public static function checkMaximalPasswordLength( $policyVal, User $user, $password ) { + $status = Status::newGood(); + if ( $policyVal < strlen( $password ) ) { + $status->fatal( 'passwordtoolong', $policyVal ); + } + return $status; + } + + /** + * Check if username and password match + * @param bool $policyVal true to force compliance. + * @param User $user + * @param string $password + * @return Status error if username and password match, and policy is true + */ + public static function checkPasswordCannotMatchUsername( $policyVal, User $user, $password ) { + global $wgContLang; + $status = Status::newGood(); + $username = $user->getName(); + if ( $policyVal && $wgContLang->lc( $password ) === $wgContLang->lc( $username ) ) { + $status->error( 'password-name-match' ); + } + return $status; + } + + /** + * Check if username and password are on a blacklist + * @param bool $policyVal true to force compliance. + * @param User $user + * @param string $password + * @return Status error if username and password match, and policy is true + */ + public static function checkPasswordCannotMatchBlacklist( $policyVal, User $user, $password ) { + static $blockedLogins = array( + 'Useruser' => 'Passpass', 'Useruser1' => 'Passpass1', # r75589 + 'Apitestsysop' => 'testpass', 'Apitestuser' => 'testpass' # r75605 + ); + + $status = Status::newGood(); + $username = $user->getName(); + if ( $policyVal + && isset( $blockedLogins[$username] ) + && $password == $blockedLogins[$username] + ) { + $status->error( 'password-login-forbidden' ); + } + return $status; + } + +} -- cgit v1.2.3-54-g00ecf