function password_strength_ajax_check in Password Strength 7
Same name and namespace in other branches
- 6.2 password_strength.module \password_strength_ajax_check()
Menu callback for AJAX password check.
1 string reference to 'password_strength_ajax_check'
- password_strength_menu in ./
password_strength.module - Implements hook_menu().
File
- ./
password_strength.module, line 227 - Provides password controls, validation, and strength checker.
Code
function password_strength_ajax_check() {
// Prevent this page from being cached.
drupal_page_is_cacheable(FALSE);
// Ensure we have the required data.
if (!isset($_POST['token']) || !isset($_POST['uid']) || !isset($_POST['password']) || !is_numeric($_POST['uid'])) {
drupal_json_output(FALSE);
return;
}
$password = urldecode($_POST['password']);
// Disallow POSTs larger than 256 characters as minor protection against DOS.
if (strlen($password) > 256) {
drupal_json_output(FALSE);
return;
}
// Provide account as context for password strength.
$account = user_load($_POST['uid']);
$key = 'password_strength';
$key .= ':' . $account->uid;
// Validate token.
if ($account->uid && !drupal_valid_token($_POST['token'], $key)) {
drupal_json_output(FALSE);
return;
}
// Get strength information from the password checker library.
$strength = password_strength_strength($password, $account);
// Get messages.
$message_strength = password_strength_get_message_strength($strength);
$message_requirements = password_strength_get_message_requirements($strength);
$message_flaws = password_strength_get_message_flaws($strength);
// Here or password_strength_strength() may need to do zxcvbn() format
// manipulation @todo
$data = array(
'entropy' => $strength['entropy'],
'matches' => $strength['matches'],
'score' => $strength['score'],
'score_required' => $strength['score_required'],
'percent' => $strength['percent'],
'message_strength' => drupal_render($message_strength),
'message_requirements' => drupal_render($message_requirements),
'message_flaws' => drupal_render($message_flaws),
);
drupal_json_output($data);
}