Theme My Login - Version 6.3.12

Version Description

  • Fix multiple widget custom redirect error
  • Add autocomplete="off" to login form password field
  • Fix password reset process
  • Fix SSL admin JS
Download this release

Release Info

Developer jfarthing84
Plugin Icon 128x128 Theme My Login
Version 6.3.12
Comparing to
See all releases

Code changes from version 6.3.11 to 6.3.12

admin/class-theme-my-login-admin.php CHANGED
@@ -113,7 +113,7 @@ class Theme_My_Login_Admin extends Theme_My_Login_Abstract {
113
  * @access public
114
  */
115
  public function admin_enqueue_scripts() {
116
- wp_enqueue_script( 'theme-my-login-admin', WP_PLUGIN_URL . '/theme-my-login/admin/js/theme-my-login-admin.js', array( 'jquery' ), Theme_My_Login::version, true );
117
  wp_localize_script( 'theme-my-login-admin', 'tmlAdmin', array(
118
  'interim_login_url' => site_url( 'wp-login.php?interim-login=1', 'login' )
119
  ) );
113
  * @access public
114
  */
115
  public function admin_enqueue_scripts() {
116
+ wp_enqueue_script( 'theme-my-login-admin', plugins_url( 'theme-my-login/admin/js/theme-my-login-admin.js' ), array( 'jquery' ), Theme_My_Login::version, true );
117
  wp_localize_script( 'theme-my-login-admin', 'tmlAdmin', array(
118
  'interim_login_url' => site_url( 'wp-login.php?interim-login=1', 'login' )
119
  ) );
includes/class-theme-my-login.php CHANGED
@@ -21,7 +21,7 @@ class Theme_My_Login extends Theme_My_Login_Abstract {
21
  * @since 6.3.2
22
  * @const string
23
  */
24
- const version = '6.3.11';
25
 
26
  /**
27
  * Holds options key
@@ -298,26 +298,56 @@ class Theme_My_Login extends Theme_My_Login_Abstract {
298
  }
299
  }
300
 
301
- if ( isset( $_REQUEST['error'] ) && 'invalidkey' == $_REQUEST['error'] )
302
- $this->errors->add( 'invalidkey', __( 'Sorry, that key does not appear to be valid.', 'theme-my-login' ) );
 
 
 
 
303
 
304
  do_action( 'lost_password' );
305
  break;
306
  case 'resetpass' :
307
  case 'rp' :
308
- $user = self::check_password_reset_key( $_REQUEST['key'], $_REQUEST['login'] );
 
 
 
 
 
 
 
 
 
 
309
 
310
- if ( is_wp_error( $user ) ) {
311
- $redirect_to = site_url( 'wp-login.php?action=lostpassword&error=invalidkey' );
312
- wp_redirect( $redirect_to );
 
 
 
 
 
 
 
 
 
 
 
 
 
313
  exit;
314
  }
315
 
316
- if ( isset( $_POST['pass1'] ) && $_POST['pass1'] != $_POST['pass2'] ) {
317
  $this->errors->add( 'password_reset_mismatch', __( 'The passwords do not match.', 'theme-my-login' ) );
318
- } elseif ( isset( $_POST['pass1'] ) && ! empty( $_POST['pass1'] ) ) {
319
- self::reset_password( $user, $_POST['pass1'] );
320
 
 
 
 
 
 
321
  $redirect_to = site_url( 'wp-login.php?resetpass=complete' );
322
  wp_safe_redirect( $redirect_to );
323
  exit;
@@ -1021,7 +1051,7 @@ if(typeof wpOnload=='function')wpOnload()
1021
  * @return bool|WP_Error True: when finish. WP_Error on error
1022
  */
1023
  public static function retrieve_password() {
1024
- global $wpdb, $current_site;
1025
 
1026
  $errors = new WP_Error();
1027
 
@@ -1060,14 +1090,19 @@ if(typeof wpOnload=='function')wpOnload()
1060
  else if ( is_wp_error( $allow ) )
1061
  return $allow;
1062
 
1063
- $key = $wpdb->get_var( $wpdb->prepare( "SELECT user_activation_key FROM $wpdb->users WHERE user_login = %s", $user_login ) );
1064
- if ( empty( $key ) ) {
1065
- // Generate something random for a key...
1066
- $key = wp_generate_password( 20, false );
1067
- do_action( 'retrieve_password_key', $user_login, $key );
1068
- // Now insert the new md5 key into the db
1069
- $wpdb->update( $wpdb->users, array( 'user_activation_key' => $key ), array( 'user_login' => $user_login ) );
 
 
1070
  }
 
 
 
1071
  $message = __( 'Someone requested that the password be reset for the following account:', 'theme-my-login' ) . "\r\n\r\n";
1072
  $message .= network_home_url( '/' ) . "\r\n\r\n";
1073
  $message .= sprintf( __( 'Username: %s', 'theme-my-login' ), $user_login ) . "\r\n\r\n";
@@ -1076,7 +1111,7 @@ if(typeof wpOnload=='function')wpOnload()
1076
  $message .= '<' . network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user_login ), 'login' ) . ">\r\n";
1077
 
1078
  if ( is_multisite() ) {
1079
- $blogname = $current_site->site_name;
1080
  } else {
1081
  // The blogname option is escaped with esc_html on the way into the database in sanitize_option
1082
  // we want to reverse this for the plain text arena of emails.
@@ -1094,37 +1129,6 @@ if(typeof wpOnload=='function')wpOnload()
1094
  return true;
1095
  }
1096
 
1097
- /**
1098
- * Retrieves a user row based on password reset key and login
1099
- *
1100
- * @since 6.1.1
1101
- * @access public
1102
- * @uses $wpdb WordPress Database object
1103
- *
1104
- * @param string $key Hash to validate sending user's password
1105
- * @param string $login The user login
1106
- *
1107
- * @return object|WP_Error
1108
- */
1109
- public static function check_password_reset_key( $key, $login ) {
1110
- global $wpdb;
1111
-
1112
- $key = preg_replace( '/[^a-z0-9]/i', '', $key );
1113
-
1114
- if ( empty( $key ) || ! is_string( $key ) )
1115
- return new WP_Error( 'invalid_key', __( 'Invalid key', 'theme-my-login' ) );
1116
-
1117
- if ( empty( $login ) || ! is_string( $login ) )
1118
- return new WP_Error( 'invalid_key', __( 'Invalid key', 'theme-my-login' ) );
1119
-
1120
- $user = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->users WHERE user_activation_key = %s AND user_login = %s", $key, $login ) );
1121
-
1122
- if ( empty( $user ) )
1123
- return new WP_Error( 'invalid_key', __( 'Invalid key', 'theme-my-login' ) );
1124
-
1125
- return $user;
1126
- }
1127
-
1128
  /**
1129
  * Handles resetting the user's password.
1130
  *
@@ -1132,12 +1136,14 @@ if(typeof wpOnload=='function')wpOnload()
1132
  * @access public
1133
  * @uses $wpdb WordPress Database object
1134
  *
1135
- * @param string $key Hash to validate sending user's password
 
1136
  */
1137
  public static function reset_password( $user, $new_pass ) {
1138
  do_action( 'password_reset', $user, $new_pass );
1139
 
1140
  wp_set_password( $new_pass, $user->ID );
 
1141
 
1142
  do_action_ref_array( 'tml_user_password_changed', array( &$user ) );
1143
  }
21
  * @since 6.3.2
22
  * @const string
23
  */
24
+ const version = '6.3.12';
25
 
26
  /**
27
  * Holds options key
298
  }
299
  }
300
 
301
+ if ( isset( $_REQUEST['error'] ) ) {
302
+ if ( 'invalidkey' == $_REQUEST['error'] )
303
+ $this->errors->add( 'invalidkey', __( 'Sorry, that key does not appear to be valid.', 'theme-my-login' ) );
304
+ elseif ( 'expiredkey' == $_REQUEST['error'] )
305
+ $this->errors->add( 'expiredkey', __( 'Sorry, that key has expired. Please try again.', 'theme-my-login' ) );
306
+ }
307
 
308
  do_action( 'lost_password' );
309
  break;
310
  case 'resetpass' :
311
  case 'rp' :
312
+ // Dirty hack for now
313
+ global $rp_login, $rp_key;
314
+
315
+ list( $rp_path ) = explode( '?', wp_unslash( $_SERVER['REQUEST_URI'] ) );
316
+ $rp_cookie = 'wp-resetpass-' . COOKIEHASH;
317
+ if ( isset( $_GET['key'] ) ) {
318
+ $value = sprintf( '%s:%s', wp_unslash( $_GET['login'] ), wp_unslash( $_GET['key'] ) );
319
+ setcookie( $rp_cookie, $value, 0, $rp_path, COOKIE_DOMAIN, is_ssl(), true );
320
+ wp_safe_redirect( remove_query_arg( array( 'key', 'login' ) ) );
321
+ exit;
322
+ }
323
 
324
+ if ( isset( $_COOKIE[ $rp_cookie ] ) && 0 < strpos( $_COOKIE[ $rp_cookie ], ':' ) ) {
325
+ list( $rp_login, $rp_key ) = explode( ':', wp_unslash( $_COOKIE[ $rp_cookie ] ), 2 );
326
+ $user = check_password_reset_key( $rp_key, $rp_login );
327
+ if ( isset( $_POST['pass1'] ) && ! hash_equals( $rp_key, $_POST['rp_key'] ) ) {
328
+ $user = false;
329
+ }
330
+ } else {
331
+ $user = false;
332
+ }
333
+
334
+ if ( ! $user || is_wp_error( $user ) ) {
335
+ setcookie( $rp_cookie, ' ', time() - YEAR_IN_SECONDS, $rp_path, COOKIE_DOMAIN, is_ssl(), true );
336
+ if ( $user && $user->get_error_code() === 'expired_key' )
337
+ wp_redirect( site_url( 'wp-login.php?action=lostpassword&error=expiredkey' ) );
338
+ else
339
+ wp_redirect( site_url( 'wp-login.php?action=lostpassword&error=invalidkey' ) );
340
  exit;
341
  }
342
 
343
+ if ( isset( $_POST['pass1'] ) && $_POST['pass1'] != $_POST['pass2'] )
344
  $this->errors->add( 'password_reset_mismatch', __( 'The passwords do not match.', 'theme-my-login' ) );
 
 
345
 
346
+ do_action( 'validate_password_reset', $this->errors, $user );
347
+
348
+ if ( ( ! $this->errors->get_error_code() ) && isset( $_POST['pass1'] ) && ! empty( $_POST['pass1'] ) ) {
349
+ self::reset_password( $user, $_POST['pass1'] );
350
+ setcookie( $rp_cookie, ' ', time() - YEAR_IN_SECONDS, $rp_path, COOKIE_DOMAIN, is_ssl(), true );
351
  $redirect_to = site_url( 'wp-login.php?resetpass=complete' );
352
  wp_safe_redirect( $redirect_to );
353
  exit;
1051
  * @return bool|WP_Error True: when finish. WP_Error on error
1052
  */
1053
  public static function retrieve_password() {
1054
+ global $wpdb, $wp_hasher;
1055
 
1056
  $errors = new WP_Error();
1057
 
1090
  else if ( is_wp_error( $allow ) )
1091
  return $allow;
1092
 
1093
+ // Generate something random for a password reset key.
1094
+ $key = wp_generate_password( 20, false );
1095
+
1096
+ do_action( 'retrieve_password_key', $user_login, $key );
1097
+
1098
+ // Now insert the key, hashed, into the DB.
1099
+ if ( empty( $wp_hasher ) ) {
1100
+ require_once ABSPATH . WPINC . '/class-phpass.php';
1101
+ $wp_hasher = new PasswordHash( 8, true );
1102
  }
1103
+ $hashed = $wp_hasher->HashPassword( $key );
1104
+ $wpdb->update( $wpdb->users, array( 'user_activation_key' => $hashed ), array( 'user_login' => $user_login ) );
1105
+
1106
  $message = __( 'Someone requested that the password be reset for the following account:', 'theme-my-login' ) . "\r\n\r\n";
1107
  $message .= network_home_url( '/' ) . "\r\n\r\n";
1108
  $message .= sprintf( __( 'Username: %s', 'theme-my-login' ), $user_login ) . "\r\n\r\n";
1111
  $message .= '<' . network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user_login ), 'login' ) . ">\r\n";
1112
 
1113
  if ( is_multisite() ) {
1114
+ $blogname = $GLOBALS['current_site']->site_name;
1115
  } else {
1116
  // The blogname option is escaped with esc_html on the way into the database in sanitize_option
1117
  // we want to reverse this for the plain text arena of emails.
1129
  return true;
1130
  }
1131
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1132
  /**
1133
  * Handles resetting the user's password.
1134
  *
1136
  * @access public
1137
  * @uses $wpdb WordPress Database object
1138
  *
1139
+ * @param WP_User $user The user
1140
+ * @param string $new_pass New password for the user
1141
  */
1142
  public static function reset_password( $user, $new_pass ) {
1143
  do_action( 'password_reset', $user, $new_pass );
1144
 
1145
  wp_set_password( $new_pass, $user->ID );
1146
+ update_user_option( $user->ID, 'default_password_nag', false, true );
1147
 
1148
  do_action_ref_array( 'tml_user_password_changed', array( &$user ) );
1149
  }
language/theme-my-login.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the same license as the Theme My Login package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Theme My Login 6.3.11\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/theme-my-login\n"
7
- "POT-Creation-Date: 2015-03-31 17:39:01+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -318,7 +318,7 @@ msgstr ""
318
  msgid "A login form for your blog."
319
  msgstr ""
320
 
321
- #. #-#-#-#-# plugin.pot (Theme My Login 6.3.10) #-#-#-#-#
322
  #. Plugin Name of the plugin/theme
323
  #: includes/class-theme-my-login-widget.php:26
324
  msgid "Theme My Login"
@@ -374,70 +374,74 @@ msgstr ""
374
  msgid "Reset Password"
375
  msgstr ""
376
 
377
- #: includes/class-theme-my-login.php:302
378
  msgid "Sorry, that key does not appear to be valid."
379
  msgstr ""
380
 
381
- #: includes/class-theme-my-login.php:317
 
 
 
 
382
  msgid "The passwords do not match."
383
  msgstr ""
384
 
385
- #: includes/class-theme-my-login.php:412
386
  msgid "You are now logged out."
387
  msgstr ""
388
 
389
- #: includes/class-theme-my-login.php:414
390
  msgid "User registration is currently not allowed."
391
  msgstr ""
392
 
393
- #: includes/class-theme-my-login.php:416
394
  msgid "Check your e-mail for the confirmation link."
395
  msgstr ""
396
 
397
- #: includes/class-theme-my-login.php:418
398
  msgid "Your password has been reset."
399
  msgstr ""
400
 
401
- #: includes/class-theme-my-login.php:420
402
  msgid "Registration complete. Please check your e-mail."
403
  msgstr ""
404
 
405
- #: includes/class-theme-my-login.php:422
406
  msgid "Your session has expired. Please log-in again."
407
  msgstr ""
408
 
409
- #: includes/class-theme-my-login.php:424
410
  msgid ""
411
  "<strong>You have successfully updated WordPress!</strong> Please log back in "
412
  "to experience the awesomeness."
413
  msgstr ""
414
 
415
- #: includes/class-theme-my-login.php:426
416
  msgid "Please log in to continue."
417
  msgstr ""
418
 
419
- #: includes/class-theme-my-login.php:1029
420
  msgid "<strong>ERROR</strong>: Enter a username or e-mail address."
421
  msgstr ""
422
 
423
- #: includes/class-theme-my-login.php:1033
424
  msgid ""
425
  "<strong>ERROR</strong>: There is no user registered with that email address."
426
  msgstr ""
427
 
428
- #: includes/class-theme-my-login.php:1045
429
  msgid "<strong>ERROR</strong>: Invalid username or e-mail."
430
  msgstr ""
431
 
432
- #: includes/class-theme-my-login.php:1059
433
  msgid "Password reset is not allowed for this user"
434
  msgstr ""
435
 
436
- #: includes/class-theme-my-login.php:1071
437
  msgid "Someone requested that the password be reset for the following account:"
438
  msgstr ""
439
 
440
- #: includes/class-theme-my-login.php:1073
441
  #: modules/custom-email/custom-email.php:809
442
  #: modules/custom-email/custom-email.php:826
443
  #: modules/user-moderation/admin/user-moderation-admin.php:376
@@ -445,74 +449,63 @@ msgstr ""
445
  msgid "Username: %s"
446
  msgstr ""
447
 
448
- #: includes/class-theme-my-login.php:1074
449
  msgid "If this was a mistake, just ignore this email and nothing will happen."
450
  msgstr ""
451
 
452
- #: includes/class-theme-my-login.php:1075
453
  msgid "To reset your password, visit the following address:"
454
  msgstr ""
455
 
456
- #: includes/class-theme-my-login.php:1086
457
  msgid "[%s] Password Reset"
458
  msgstr ""
459
 
460
- #: includes/class-theme-my-login.php:1092
461
  #: modules/user-moderation/admin/user-moderation-admin.php:252
462
  #: modules/user-moderation/admin/user-moderation-admin.php:386
463
  #: modules/user-moderation/admin/user-moderation-admin.php:425
464
  msgid "The e-mail could not be sent."
465
  msgstr ""
466
 
467
- #: includes/class-theme-my-login.php:1092
468
  #: modules/user-moderation/admin/user-moderation-admin.php:252
469
  #: modules/user-moderation/admin/user-moderation-admin.php:386
470
  #: modules/user-moderation/admin/user-moderation-admin.php:425
471
  msgid "Possible reason: your host may have disabled the mail() function..."
472
  msgstr ""
473
 
474
- #: includes/class-theme-my-login.php:1115
475
- #: includes/class-theme-my-login.php:1118
476
- #: includes/class-theme-my-login.php:1123 modules/security/security.php:180
477
- #: modules/security/security.php:183 modules/security/security.php:186
478
- #: modules/security/security.php:189
479
- #: modules/user-moderation/user-moderation.php:354
480
- #: modules/user-moderation/user-moderation.php:357
481
- #: modules/user-moderation/user-moderation.php:362
482
- msgid "Invalid key"
483
- msgstr ""
484
-
485
- #: includes/class-theme-my-login.php:1163
486
  msgid "<strong>ERROR</strong>: Please enter a username."
487
  msgstr ""
488
 
489
- #: includes/class-theme-my-login.php:1165
490
  msgid ""
491
  "<strong>ERROR</strong>: This username is invalid because it uses illegal "
492
  "characters. Please enter a valid username."
493
  msgstr ""
494
 
495
- #: includes/class-theme-my-login.php:1168
496
  msgid ""
497
  "<strong>ERROR</strong>: This username is already registered, please choose "
498
  "another one."
499
  msgstr ""
500
 
501
- #: includes/class-theme-my-login.php:1173
502
  msgid "<strong>ERROR</strong>: Please type your e-mail address."
503
  msgstr ""
504
 
505
- #: includes/class-theme-my-login.php:1175
506
  msgid "<strong>ERROR</strong>: The email address isn&#8217;t correct."
507
  msgstr ""
508
 
509
- #: includes/class-theme-my-login.php:1178
510
  msgid ""
511
  "<strong>ERROR</strong>: This email is already registered, please choose "
512
  "another one."
513
  msgstr ""
514
 
515
- #: includes/class-theme-my-login.php:1191
516
  msgid ""
517
  "<strong>ERROR</strong>: Couldn&#8217;t register you... please contact the <a "
518
  "href=\"mailto:%s\">webmaster</a> !"
@@ -1031,6 +1024,14 @@ msgstr ""
1031
  msgid "Your account has been unlocked. You may now log in."
1032
  msgstr ""
1033
 
 
 
 
 
 
 
 
 
1034
  #: modules/security/security.php:221 modules/security/security.php:244
1035
  msgid ""
1036
  "<strong>ERROR</strong>: This account has been locked because of too many "
2
  # This file is distributed under the same license as the Theme My Login package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Theme My Login 6.3.12\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/theme-my-login\n"
7
+ "POT-Creation-Date: 2015-05-07 15:33:02+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
318
  msgid "A login form for your blog."
319
  msgstr ""
320
 
321
+ #. #-#-#-#-# plugin.pot (Theme My Login 6.3.11) #-#-#-#-#
322
  #. Plugin Name of the plugin/theme
323
  #: includes/class-theme-my-login-widget.php:26
324
  msgid "Theme My Login"
374
  msgid "Reset Password"
375
  msgstr ""
376
 
377
+ #: includes/class-theme-my-login.php:303
378
  msgid "Sorry, that key does not appear to be valid."
379
  msgstr ""
380
 
381
+ #: includes/class-theme-my-login.php:305
382
+ msgid "Sorry, that key has expired. Please try again."
383
+ msgstr ""
384
+
385
+ #: includes/class-theme-my-login.php:344
386
  msgid "The passwords do not match."
387
  msgstr ""
388
 
389
+ #: includes/class-theme-my-login.php:442
390
  msgid "You are now logged out."
391
  msgstr ""
392
 
393
+ #: includes/class-theme-my-login.php:444
394
  msgid "User registration is currently not allowed."
395
  msgstr ""
396
 
397
+ #: includes/class-theme-my-login.php:446
398
  msgid "Check your e-mail for the confirmation link."
399
  msgstr ""
400
 
401
+ #: includes/class-theme-my-login.php:448
402
  msgid "Your password has been reset."
403
  msgstr ""
404
 
405
+ #: includes/class-theme-my-login.php:450
406
  msgid "Registration complete. Please check your e-mail."
407
  msgstr ""
408
 
409
+ #: includes/class-theme-my-login.php:452
410
  msgid "Your session has expired. Please log-in again."
411
  msgstr ""
412
 
413
+ #: includes/class-theme-my-login.php:454
414
  msgid ""
415
  "<strong>You have successfully updated WordPress!</strong> Please log back in "
416
  "to experience the awesomeness."
417
  msgstr ""
418
 
419
+ #: includes/class-theme-my-login.php:456
420
  msgid "Please log in to continue."
421
  msgstr ""
422
 
423
+ #: includes/class-theme-my-login.php:1059
424
  msgid "<strong>ERROR</strong>: Enter a username or e-mail address."
425
  msgstr ""
426
 
427
+ #: includes/class-theme-my-login.php:1063
428
  msgid ""
429
  "<strong>ERROR</strong>: There is no user registered with that email address."
430
  msgstr ""
431
 
432
+ #: includes/class-theme-my-login.php:1075
433
  msgid "<strong>ERROR</strong>: Invalid username or e-mail."
434
  msgstr ""
435
 
436
+ #: includes/class-theme-my-login.php:1089
437
  msgid "Password reset is not allowed for this user"
438
  msgstr ""
439
 
440
+ #: includes/class-theme-my-login.php:1106
441
  msgid "Someone requested that the password be reset for the following account:"
442
  msgstr ""
443
 
444
+ #: includes/class-theme-my-login.php:1108
445
  #: modules/custom-email/custom-email.php:809
446
  #: modules/custom-email/custom-email.php:826
447
  #: modules/user-moderation/admin/user-moderation-admin.php:376
449
  msgid "Username: %s"
450
  msgstr ""
451
 
452
+ #: includes/class-theme-my-login.php:1109
453
  msgid "If this was a mistake, just ignore this email and nothing will happen."
454
  msgstr ""
455
 
456
+ #: includes/class-theme-my-login.php:1110
457
  msgid "To reset your password, visit the following address:"
458
  msgstr ""
459
 
460
+ #: includes/class-theme-my-login.php:1121
461
  msgid "[%s] Password Reset"
462
  msgstr ""
463
 
464
+ #: includes/class-theme-my-login.php:1127
465
  #: modules/user-moderation/admin/user-moderation-admin.php:252
466
  #: modules/user-moderation/admin/user-moderation-admin.php:386
467
  #: modules/user-moderation/admin/user-moderation-admin.php:425
468
  msgid "The e-mail could not be sent."
469
  msgstr ""
470
 
471
+ #: includes/class-theme-my-login.php:1127
472
  #: modules/user-moderation/admin/user-moderation-admin.php:252
473
  #: modules/user-moderation/admin/user-moderation-admin.php:386
474
  #: modules/user-moderation/admin/user-moderation-admin.php:425
475
  msgid "Possible reason: your host may have disabled the mail() function..."
476
  msgstr ""
477
 
478
+ #: includes/class-theme-my-login.php:1169
 
 
 
 
 
 
 
 
 
 
 
479
  msgid "<strong>ERROR</strong>: Please enter a username."
480
  msgstr ""
481
 
482
+ #: includes/class-theme-my-login.php:1171
483
  msgid ""
484
  "<strong>ERROR</strong>: This username is invalid because it uses illegal "
485
  "characters. Please enter a valid username."
486
  msgstr ""
487
 
488
+ #: includes/class-theme-my-login.php:1174
489
  msgid ""
490
  "<strong>ERROR</strong>: This username is already registered, please choose "
491
  "another one."
492
  msgstr ""
493
 
494
+ #: includes/class-theme-my-login.php:1179
495
  msgid "<strong>ERROR</strong>: Please type your e-mail address."
496
  msgstr ""
497
 
498
+ #: includes/class-theme-my-login.php:1181
499
  msgid "<strong>ERROR</strong>: The email address isn&#8217;t correct."
500
  msgstr ""
501
 
502
+ #: includes/class-theme-my-login.php:1184
503
  msgid ""
504
  "<strong>ERROR</strong>: This email is already registered, please choose "
505
  "another one."
506
  msgstr ""
507
 
508
+ #: includes/class-theme-my-login.php:1197
509
  msgid ""
510
  "<strong>ERROR</strong>: Couldn&#8217;t register you... please contact the <a "
511
  "href=\"mailto:%s\">webmaster</a> !"
1024
  msgid "Your account has been unlocked. You may now log in."
1025
  msgstr ""
1026
 
1027
+ #: modules/security/security.php:180 modules/security/security.php:183
1028
+ #: modules/security/security.php:186 modules/security/security.php:189
1029
+ #: modules/user-moderation/user-moderation.php:354
1030
+ #: modules/user-moderation/user-moderation.php:357
1031
+ #: modules/user-moderation/user-moderation.php:362
1032
+ msgid "Invalid key"
1033
+ msgstr ""
1034
+
1035
  #: modules/security/security.php:221 modules/security/security.php:244
1036
  msgid ""
1037
  "<strong>ERROR</strong>: This account has been locked because of too many "
modules/custom-redirection/custom-redirection.php CHANGED
@@ -89,8 +89,7 @@ class Theme_My_Login_Custom_Redirection extends Theme_My_Login_Abstract {
89
  * @access public
90
  */
91
  public function login_form() {
92
- $template = Theme_My_Login::get_object()->get_active_instance();
93
- echo wp_original_referer_field( false, $template->get_option( 'instance' ) ? 'current' : 'previous' ) . "\n";
94
  }
95
 
96
  /**
89
  * @access public
90
  */
91
  public function login_form() {
92
+ echo wp_original_referer_field( false, Theme_My_Login::is_tml_page() ? 'previous' : 'current' ) . "\n";
 
93
  }
94
 
95
  /**
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: jfarthing84
3
  Tags: widget, login, registration, theme, custom, log in, register, sidebar, gravatar, redirection, e-mail
4
  Requires at least: 3.7
5
  Tested up to: 4.2
6
- Stable tag: 6.3.11
7
 
8
  Themes the WordPress login pages according to your theme.
9
 
@@ -56,6 +56,12 @@ Please visit http://www.jfarthing.com/development/theme-my-login.
56
 
57
  == Changelog ==
58
 
 
 
 
 
 
 
59
  = 6.3.11 =
60
  * Fix interim login
61
  * Fix partial translations
3
  Tags: widget, login, registration, theme, custom, log in, register, sidebar, gravatar, redirection, e-mail
4
  Requires at least: 3.7
5
  Tested up to: 4.2
6
+ Stable tag: 6.3.12
7
 
8
  Themes the WordPress login pages according to your theme.
9
 
56
 
57
  == Changelog ==
58
 
59
+ = 6.3.12 =
60
+ * Fix multiple widget custom redirect error
61
+ * Add autocomplete="off" to login form password field
62
+ * Fix password reset process
63
+ * Fix SSL admin JS
64
+
65
  = 6.3.11 =
66
  * Fix interim login
67
  * Fix partial translations
templates/login-form.php CHANGED
@@ -14,7 +14,7 @@ Theme My Login will always look in your theme's directory first, before using th
14
  </p>
15
  <p>
16
  <label for="user_pass<?php $template->the_instance(); ?>"><?php _e( 'Password', 'theme-my-login' ); ?></label>
17
- <input type="password" name="pwd" id="user_pass<?php $template->the_instance(); ?>" class="input" value="" size="20" />
18
  </p>
19
 
20
  <?php do_action( 'login_form' ); ?>
14
  </p>
15
  <p>
16
  <label for="user_pass<?php $template->the_instance(); ?>"><?php _e( 'Password', 'theme-my-login' ); ?></label>
17
+ <input type="password" name="pwd" id="user_pass<?php $template->the_instance(); ?>" class="input" value="" size="20" autocomplete="off" />
18
  </p>
19
 
20
  <?php do_action( 'login_form' ); ?>
templates/resetpass-form.php CHANGED
@@ -26,8 +26,8 @@ Theme My Login will always look in your theme's directory first, before using th
26
 
27
  <p class="submit">
28
  <input type="submit" name="wp-submit" id="wp-submit<?php $template->the_instance(); ?>" value="<?php esc_attr_e( 'Reset Password', 'theme-my-login' ); ?>" />
29
- <input type="hidden" name="key" value="<?php $template->the_posted_value( 'key' ); ?>" />
30
- <input type="hidden" name="login" id="user_login" value="<?php $template->the_posted_value( 'login' ); ?>" />
31
  <input type="hidden" name="instance" value="<?php $template->the_instance(); ?>" />
32
  <input type="hidden" name="action" value="resetpass" />
33
  </p>
26
 
27
  <p class="submit">
28
  <input type="submit" name="wp-submit" id="wp-submit<?php $template->the_instance(); ?>" value="<?php esc_attr_e( 'Reset Password', 'theme-my-login' ); ?>" />
29
+ <input type="hidden" id="user_login" value="<?php echo esc_attr( $GLOBALS['rp_login'] ); ?>" autocomplete="off" />
30
+ <input type="hidden" name="rp_key" value="<?php echo esc_attr( $GLOBALS['rp_key'] ); ?>" />
31
  <input type="hidden" name="instance" value="<?php $template->the_instance(); ?>" />
32
  <input type="hidden" name="action" value="resetpass" />
33
  </p>
theme-my-login.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Theme My Login
4
  Plugin URI: http://www.jfarthing.com/extend/wordpress-plugins/theme-my-login/
5
  Description: Themes the WordPress login, registration and forgot password pages according to your theme.
6
- Version: 6.3.11
7
  Author: Jeff Farthing
8
  Author URI: http://www.jfarthing.com
9
  Text Domain: theme-my-login
3
  Plugin Name: Theme My Login
4
  Plugin URI: http://www.jfarthing.com/extend/wordpress-plugins/theme-my-login/
5
  Description: Themes the WordPress login, registration and forgot password pages according to your theme.
6
+ Version: 6.3.12
7
  Author: Jeff Farthing
8
  Author URI: http://www.jfarthing.com
9
  Text Domain: theme-my-login