mirror of
https://github.com/moodle/moodle.git
synced 2025-04-13 20:42:22 +02:00
Merge branch 'wip-MDL-61694_Check_Password_Callback' of https://github.com/Spudley/moodle
This commit is contained in:
commit
c051057058
@ -4749,32 +4749,38 @@ function get_complete_user_data($field, $value, $mnethostid = null) {
|
||||
function check_password_policy($password, &$errmsg) {
|
||||
global $CFG;
|
||||
|
||||
if (empty($CFG->passwordpolicy)) {
|
||||
return true;
|
||||
if (!empty($CFG->passwordpolicy)) {
|
||||
$errmsg = '';
|
||||
if (core_text::strlen($password) < $CFG->minpasswordlength) {
|
||||
$errmsg .= '<div>'. get_string('errorminpasswordlength', 'auth', $CFG->minpasswordlength) .'</div>';
|
||||
}
|
||||
if (preg_match_all('/[[:digit:]]/u', $password, $matches) < $CFG->minpassworddigits) {
|
||||
$errmsg .= '<div>'. get_string('errorminpassworddigits', 'auth', $CFG->minpassworddigits) .'</div>';
|
||||
}
|
||||
if (preg_match_all('/[[:lower:]]/u', $password, $matches) < $CFG->minpasswordlower) {
|
||||
$errmsg .= '<div>'. get_string('errorminpasswordlower', 'auth', $CFG->minpasswordlower) .'</div>';
|
||||
}
|
||||
if (preg_match_all('/[[:upper:]]/u', $password, $matches) < $CFG->minpasswordupper) {
|
||||
$errmsg .= '<div>'. get_string('errorminpasswordupper', 'auth', $CFG->minpasswordupper) .'</div>';
|
||||
}
|
||||
if (preg_match_all('/[^[:upper:][:lower:][:digit:]]/u', $password, $matches) < $CFG->minpasswordnonalphanum) {
|
||||
$errmsg .= '<div>'. get_string('errorminpasswordnonalphanum', 'auth', $CFG->minpasswordnonalphanum) .'</div>';
|
||||
}
|
||||
if (!check_consecutive_identical_characters($password, $CFG->maxconsecutiveidentchars)) {
|
||||
$errmsg .= '<div>'. get_string('errormaxconsecutiveidentchars', 'auth', $CFG->maxconsecutiveidentchars) .'</div>';
|
||||
}
|
||||
}
|
||||
|
||||
$errmsg = '';
|
||||
if (core_text::strlen($password) < $CFG->minpasswordlength) {
|
||||
$errmsg .= '<div>'. get_string('errorminpasswordlength', 'auth', $CFG->minpasswordlength) .'</div>';
|
||||
|
||||
}
|
||||
if (preg_match_all('/[[:digit:]]/u', $password, $matches) < $CFG->minpassworddigits) {
|
||||
$errmsg .= '<div>'. get_string('errorminpassworddigits', 'auth', $CFG->minpassworddigits) .'</div>';
|
||||
|
||||
}
|
||||
if (preg_match_all('/[[:lower:]]/u', $password, $matches) < $CFG->minpasswordlower) {
|
||||
$errmsg .= '<div>'. get_string('errorminpasswordlower', 'auth', $CFG->minpasswordlower) .'</div>';
|
||||
|
||||
}
|
||||
if (preg_match_all('/[[:upper:]]/u', $password, $matches) < $CFG->minpasswordupper) {
|
||||
$errmsg .= '<div>'. get_string('errorminpasswordupper', 'auth', $CFG->minpasswordupper) .'</div>';
|
||||
|
||||
}
|
||||
if (preg_match_all('/[^[:upper:][:lower:][:digit:]]/u', $password, $matches) < $CFG->minpasswordnonalphanum) {
|
||||
$errmsg .= '<div>'. get_string('errorminpasswordnonalphanum', 'auth', $CFG->minpasswordnonalphanum) .'</div>';
|
||||
}
|
||||
if (!check_consecutive_identical_characters($password, $CFG->maxconsecutiveidentchars)) {
|
||||
$errmsg .= '<div>'. get_string('errormaxconsecutiveidentchars', 'auth', $CFG->maxconsecutiveidentchars) .'</div>';
|
||||
// Fire any additional password policy functions from plugins.
|
||||
// Plugin functions should output an error message string or empty string for success.
|
||||
$pluginsfunction = get_plugins_with_function('check_password_policy');
|
||||
foreach ($pluginsfunction as $plugintype => $plugins) {
|
||||
foreach ($plugins as $pluginfunction) {
|
||||
$pluginerr = $pluginfunction($password);
|
||||
if ($pluginerr) {
|
||||
$errmsg .= '<div>'. $pluginerr .'</div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($errmsg == '') {
|
||||
|
Loading…
x
Reference in New Issue
Block a user