Password Protected - Version 2.5.2

Version Description

  • Made compatibility with login designer; Now you can customize the password-protected screen with the customizer using login designer plugin.
Download this release

Release Info

Developer wpexpertsio
Plugin Icon 128x128 Password Protected
Version 2.5.2
Comparing to
See all releases

Code changes from version 2.5.1 to 2.5.2

CHANGELOG.md CHANGED
@@ -2,6 +2,9 @@
2
  All notable changes to this project will be documented in this file.
3
  This project adheres to [Semantic Versioning](http://semver.org/).
4
 
 
 
 
5
  ## [2.5] - 2021-09-01
6
 
7
  ### Fixed
2
  All notable changes to this project will be documented in this file.
3
  This project adheres to [Semantic Versioning](http://semver.org/).
4
 
5
+ ### 2.5.2 - 2022-05-26
6
+ Made compatibility with [login designer](https://wp.org/plugins/login-designer); Now you can customize the password-protected screen with the customizer using login designer plugin.
7
+
8
  ## [2.5] - 2021-09-01
9
 
10
  ### Fixed
README.md CHANGED
@@ -10,8 +10,7 @@ Features include:
10
  - Password protect your WordPress site with a single password.
11
  - Option to allow access to feeds.
12
  - Option to allow administrators access without entering password.
13
- - Works with Mark Jaquith's [Login Logo](https://wordpress.org/plugins/login-logo/) plugin.
14
- - Works with the [Uber Login Logo](https://wordpress.org/plugins/uber-login-logo/) plugin.
15
 
16
  > Please note, this plugin works by setting a cookie to allow access to the site. If you are using a caching plugin or web hosting such as WP Engine that has in-built caching, you will need to configure the caching service to be disabled if the Password Protected cookie is set.
17
 
@@ -74,6 +73,9 @@ If you would like to translate this plugin you can easily contribute at the [Tra
74
  Upgrade Notice
75
  --------------
76
 
 
 
 
77
  ### 2.5
78
  Fixes robots tag for WordPress 5.7+
79
 
10
  - Password protect your WordPress site with a single password.
11
  - Option to allow access to feeds.
12
  - Option to allow administrators access without entering password.
13
+ - *New* 👉 Now you can customize the whole password protected screen including the background, font, logo, color e.t.c.
 
14
 
15
  > Please note, this plugin works by setting a cookie to allow access to the site. If you are using a caching plugin or web hosting such as WP Engine that has in-built caching, you will need to configure the caching service to be disabled if the Password Protected cookie is set.
16
 
73
  Upgrade Notice
74
  --------------
75
 
76
+ ### 2.5.2
77
+ Made compatibility with [login designer](https://wp.org/plugins/login-designer); Now you can customize the password-protected screen with the customizer using login designer plugin.
78
+
79
  ### 2.5
80
  Fixes robots tag for WordPress 5.7+
81
 
assets/banner-1544x500.png ADDED
Binary file
assets/banner-772x250.png ADDED
Binary file
assets/icon-128x128.png ADDED
Binary file
assets/icon-256x256.png ADDED
Binary file
assets/screenshot-1.png ADDED
Binary file
assets/screenshot-2.png ADDED
Binary file
assets/src/Banner.fw.png ADDED
Binary file
assets/src/Icon.fw.png ADDED
Binary file
password-protected.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Password Protected
4
  Plugin URI: https://wordpress.org/plugins/password-protected/
5
  Description: A very simple way to quickly password protect your WordPress site with a single password. Please note: This plugin does not restrict access to uploaded files and images and does not work with some caching setups.
6
- Version: 2.5.1
7
  Author: WPExperts
8
  Text Domain: password-protected
9
  Author URI: https://wpexperts.io/
@@ -39,7 +39,7 @@ $Password_Protected = new Password_Protected();
39
 
40
  class Password_Protected {
41
 
42
- var $version = '2.5.1';
43
  var $admin = null;
44
  var $errors = null;
45
 
@@ -76,15 +76,15 @@ class Password_Protected {
76
 
77
  add_shortcode( 'password_protected_logout_link', array( $this, 'logout_link_shortcode' ) );
78
 
79
- include_once( dirname( __FILE__ ) . '/admin/admin-bar.php' );
80
 
81
  if ( is_admin() ) {
82
 
83
- include_once( dirname( __FILE__ ) . '/admin/admin-caching.php' );
84
- include_once( dirname( __FILE__ ) . '/admin/admin.php' );
85
 
86
  $this->admin_caching = new Password_Protected_Admin_Caching( $this );
87
- $this->admin = new Password_Protected_Admin();
88
 
89
  }
90
 
@@ -171,7 +171,7 @@ class Password_Protected {
171
  /**
172
  * Allow Feeds
173
  *
174
- * @param boolean $bool Allow feeds.
175
  * @return boolean True/false.
176
  */
177
  public function allow_feeds( $bool ) {
@@ -187,7 +187,7 @@ class Password_Protected {
187
  /**
188
  * Allow Administrators
189
  *
190
- * @param boolean $bool Allow administrators.
191
  * @return boolean True/false.
192
  */
193
  public function allow_administrators( $bool ) {
@@ -203,7 +203,7 @@ class Password_Protected {
203
  /**
204
  * Allow Users
205
  *
206
- * @param boolean $bool Allow administrators.
207
  * @return boolean True/false.
208
  */
209
  public function allow_users( $bool ) {
@@ -221,7 +221,7 @@ class Password_Protected {
221
  *
222
  * If user has a valid email address, return false to disable password protection.
223
  *
224
- * @param boolean $bool Allow IP addresses.
225
  * @return boolean True/false.
226
  */
227
  public function allow_ip_addresses( $bool ) {
@@ -261,7 +261,7 @@ class Password_Protected {
261
  /**
262
  * Encrypt Password
263
  *
264
- * @param string $password Password.
265
  * @return string Encrypted password.
266
  */
267
  public function encrypt_password( $password ) {
@@ -299,7 +299,7 @@ class Password_Protected {
299
 
300
  if ( $this->is_active() && isset( $_REQUEST['password_protected_pwd'] ) ) {
301
  $password_protected_pwd = $_REQUEST['password_protected_pwd'];
302
- $pwd = get_option( 'password_protected_password' );
303
 
304
  // If correct password...
305
  if ( ( hash_equals( $pwd, $this->encrypt_password( $password_protected_pwd ) ) && $pwd != '' ) || apply_filters( 'password_protected_process_login', false, $password_protected_pwd ) ) {
@@ -321,7 +321,6 @@ class Password_Protected {
321
  $this->safe_redirect( remove_query_arg( 'password-protected' ) );
322
  exit;
323
  }
324
-
325
  } else {
326
 
327
  // ... otherwise incorrect password
@@ -329,7 +328,6 @@ class Password_Protected {
329
  $this->errors->add( 'incorrect_password', __( 'Incorrect Password', 'password-protected' ) );
330
 
331
  }
332
-
333
  }
334
 
335
  }
@@ -349,12 +347,17 @@ class Password_Protected {
349
  * Maybe Show Login
350
  */
351
  public function maybe_show_login() {
 
 
 
 
 
352
 
353
  // Filter for adding exceptions.
354
  $show_login = apply_filters( 'password_protected_show_login', $this->is_active() );
355
 
356
  // Logged in
357
- if ( $this->is_user_logged_in() ) {
358
  $show_login = false;
359
  }
360
 
@@ -432,14 +435,14 @@ class Password_Protected {
432
  /**
433
  * Logout URL
434
  *
435
- * @param string $redirect_to Optional. Redirect URL.
436
  * @return string Logout URL.
437
  */
438
  public function logout_url( $redirect_to = '' ) {
439
 
440
  $query = array(
441
  'password-protected' => 'logout',
442
- 'redirect_to' => esc_url_raw( $redirect_to )
443
  );
444
 
445
  if ( empty( $query['redirect_to'] ) ) {
@@ -453,7 +456,7 @@ class Password_Protected {
453
  /**
454
  * Logout Link
455
  *
456
- * @param array $args Link args.
457
  * @return string HTML link tag.
458
  */
459
  public function logout_link( $args = null ) {
@@ -463,10 +466,13 @@ class Password_Protected {
463
  return '';
464
  }
465
 
466
- $args = wp_parse_args( $args, array(
467
- 'redirect_to' => '',
468
- 'text' => __( 'Logout', 'password-protected' )
469
- ) );
 
 
 
470
 
471
  if ( empty( $args['text'] ) ) {
472
  $args['text'] = __( 'Logout', 'password-protected' );
@@ -479,15 +485,19 @@ class Password_Protected {
479
  /**
480
  * Logout Link Shortcode
481
  *
482
- * @param array $args Link args.
483
  * @return string HTML link tag.
484
  */
485
  public function logout_link_shortcode( $atts, $content = null ) {
486
 
487
- $atts = shortcode_atts( array(
488
- 'redirect_to' => '',
489
- 'text' => $content
490
- ), $atts, 'logout_link_shortcode' );
 
 
 
 
491
 
492
  return $this->logout_link( $atts );
493
 
@@ -507,8 +517,8 @@ class Password_Protected {
507
  /**
508
  * Validate Auth Cookie
509
  *
510
- * @param string $cookie Cookie string.
511
- * @param string $scheme Cookie scheme.
512
  * @return boolean Validation successful?
513
  */
514
  public function validate_auth_cookie( $cookie = '', $scheme = '' ) {
@@ -529,12 +539,12 @@ class Password_Protected {
529
 
530
  // Quick check to see if an honest cookie has expired
531
  if ( $expired < current_time( 'timestamp' ) ) {
532
- do_action('password_protected_auth_cookie_expired', $cookie_elements);
533
  return false;
534
  }
535
 
536
- $key = md5( $this->get_site_id() . $this->get_hashed_password() . '|' . $expiration );
537
- $hash = hash_hmac( 'md5', $this->get_site_id() . '|' . $expiration, $key);
538
 
539
  if ( $hmac != $hash ) {
540
  do_action( 'password_protected_auth_cookie_bad_hash', $cookie_elements );
@@ -552,14 +562,14 @@ class Password_Protected {
552
  /**
553
  * Generate Auth Cookie
554
  *
555
- * @param int $expiration Expiration time in seconds.
556
- * @param string $scheme Cookie scheme.
557
  * @return string Cookie.
558
  */
559
  public function generate_auth_cookie( $expiration, $scheme = 'auth' ) {
560
 
561
- $key = md5( $this->get_site_id() . $this->get_hashed_password() . '|' . $expiration );
562
- $hash = hash_hmac( 'md5', $this->get_site_id() . '|' . $expiration, $key );
563
  $cookie = $this->get_site_id() . '|' . $expiration . '|' . $hash;
564
 
565
  return $cookie;
@@ -569,8 +579,8 @@ class Password_Protected {
569
  /**
570
  * Parse Auth Cookie
571
  *
572
- * @param string $cookie Cookie string.
573
- * @param string $scheme Cookie scheme.
574
  * @return string Cookie string.
575
  */
576
  public function parse_auth_cookie( $cookie = '', $scheme = '' ) {
@@ -604,18 +614,18 @@ class Password_Protected {
604
  *
605
  * @todo
606
  *
607
- * @param boolean $remember Remember logged in.
608
- * @param string $secure Secure cookie.
609
  */
610
- public function set_auth_cookie( $remember = false, $secure = '') {
611
 
612
  if ( $remember ) {
613
  $expiration_time = apply_filters( 'password_protected_auth_cookie_expiration', get_option( 'password_protected_remember_me_lifetime', 14 ) * DAY_IN_SECONDS, $remember );
614
- $expiration = $expire = current_time( 'timestamp' ) + $expiration_time;
615
  } else {
616
  $expiration_time = apply_filters( 'password_protected_auth_cookie_expiration', DAY_IN_SECONDS * 20, $remember );
617
- $expiration = current_time( 'timestamp' ) + $expiration_time;
618
- $expire = 0;
619
  }
620
 
621
  if ( '' === $secure ) {
@@ -623,7 +633,7 @@ class Password_Protected {
623
  }
624
 
625
  $secure_password_protected_cookie = apply_filters( 'password_protected_secure_password_protected_cookie', false, $secure );
626
- $password_protected_cookie = $this->generate_auth_cookie( $expiration, 'password_protected' );
627
 
628
  setcookie( $this->cookie_name(), $password_protected_cookie, $expire, COOKIEPATH, COOKIE_DOMAIN, $secure_password_protected_cookie, true );
629
  if ( COOKIEPATH != SITECOOKIEPATH ) {
@@ -689,7 +699,7 @@ class Password_Protected {
689
  if ( class_exists( 'CWS_Login_Logo_Plugin' ) ) {
690
 
691
  // Add support for Mark Jaquith's Login Logo plugin
692
- add_action( 'password_protected_login_head', array( new CWS_Login_Logo_Plugin, 'login_head' ) );
693
 
694
  } elseif ( class_exists( 'UberLoginLogo' ) ) {
695
 
@@ -714,7 +724,7 @@ class Password_Protected {
714
 
715
  if ( $this->errors->get_error_code() ) {
716
 
717
- $errors = '';
718
  $messages = '';
719
 
720
  foreach ( $this->errors->get_error_codes() as $code ) {
@@ -734,7 +744,6 @@ class Password_Protected {
734
  if ( ! empty( $messages ) ) {
735
  echo '<p class="message">' . apply_filters( 'password_protected_login_messages', $messages ) . "</p>\n";
736
  }
737
-
738
  }
739
 
740
  }
@@ -759,14 +768,13 @@ class Password_Protected {
759
  if ( ! empty( $located ) ) {
760
 
761
  $stylesheet_directory = trailingslashit( get_stylesheet_directory() );
762
- $template_directory = trailingslashit( get_template_directory() );
763
 
764
  if ( $stylesheet_directory == substr( $located, 0, strlen( $stylesheet_directory ) ) ) {
765
  wp_enqueue_style( 'password-protected-login', get_stylesheet_directory_uri() . '/' . $filename );
766
- } else if ( $template_directory == substr( $located, 0, strlen( $template_directory ) ) ) {
767
  wp_enqueue_style( 'password-protected-login', get_template_directory_uri() . '/' . $filename );
768
  }
769
-
770
  }
771
 
772
  }
@@ -807,7 +815,7 @@ class Password_Protected {
807
  * Always allow logged in users who require REST API for Gutenberg
808
  * and other admin/plugin compatibility.
809
  *
810
- * @param WP_REST_Request $access Full details about the request.
811
  * @return WP_Error|boolean
812
  */
813
  public function only_allow_logged_in_rest_access( $access ) {
3
  Plugin Name: Password Protected
4
  Plugin URI: https://wordpress.org/plugins/password-protected/
5
  Description: A very simple way to quickly password protect your WordPress site with a single password. Please note: This plugin does not restrict access to uploaded files and images and does not work with some caching setups.
6
+ Version: 2.5.2
7
  Author: WPExperts
8
  Text Domain: password-protected
9
  Author URI: https://wpexperts.io/
39
 
40
  class Password_Protected {
41
 
42
+ var $version = '2.5.2';
43
  var $admin = null;
44
  var $errors = null;
45
 
76
 
77
  add_shortcode( 'password_protected_logout_link', array( $this, 'logout_link_shortcode' ) );
78
 
79
+ include_once dirname( __FILE__ ) . '/admin/admin-bar.php';
80
 
81
  if ( is_admin() ) {
82
 
83
+ include_once dirname( __FILE__ ) . '/admin/admin-caching.php';
84
+ include_once dirname( __FILE__ ) . '/admin/admin.php';
85
 
86
  $this->admin_caching = new Password_Protected_Admin_Caching( $this );
87
+ $this->admin = new Password_Protected_Admin();
88
 
89
  }
90
 
171
  /**
172
  * Allow Feeds
173
  *
174
+ * @param boolean $bool Allow feeds.
175
  * @return boolean True/false.
176
  */
177
  public function allow_feeds( $bool ) {
187
  /**
188
  * Allow Administrators
189
  *
190
+ * @param boolean $bool Allow administrators.
191
  * @return boolean True/false.
192
  */
193
  public function allow_administrators( $bool ) {
203
  /**
204
  * Allow Users
205
  *
206
+ * @param boolean $bool Allow administrators.
207
  * @return boolean True/false.
208
  */
209
  public function allow_users( $bool ) {
221
  *
222
  * If user has a valid email address, return false to disable password protection.
223
  *
224
+ * @param boolean $bool Allow IP addresses.
225
  * @return boolean True/false.
226
  */
227
  public function allow_ip_addresses( $bool ) {
261
  /**
262
  * Encrypt Password
263
  *
264
+ * @param string $password Password.
265
  * @return string Encrypted password.
266
  */
267
  public function encrypt_password( $password ) {
299
 
300
  if ( $this->is_active() && isset( $_REQUEST['password_protected_pwd'] ) ) {
301
  $password_protected_pwd = $_REQUEST['password_protected_pwd'];
302
+ $pwd = get_option( 'password_protected_password' );
303
 
304
  // If correct password...
305
  if ( ( hash_equals( $pwd, $this->encrypt_password( $password_protected_pwd ) ) && $pwd != '' ) || apply_filters( 'password_protected_process_login', false, $password_protected_pwd ) ) {
321
  $this->safe_redirect( remove_query_arg( 'password-protected' ) );
322
  exit;
323
  }
 
324
  } else {
325
 
326
  // ... otherwise incorrect password
328
  $this->errors->add( 'incorrect_password', __( 'Incorrect Password', 'password-protected' ) );
329
 
330
  }
 
331
  }
332
 
333
  }
347
  * Maybe Show Login
348
  */
349
  public function maybe_show_login() {
350
+ if ( in_array( 'login-designer/login-designer.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ), true ) ) {
351
+ if ( is_customize_preview() ) {
352
+ return;
353
+ }
354
+ }
355
 
356
  // Filter for adding exceptions.
357
  $show_login = apply_filters( 'password_protected_show_login', $this->is_active() );
358
 
359
  // Logged in
360
+ if ( $this->is_user_logged_in() ) {
361
  $show_login = false;
362
  }
363
 
435
  /**
436
  * Logout URL
437
  *
438
+ * @param string $redirect_to Optional. Redirect URL.
439
  * @return string Logout URL.
440
  */
441
  public function logout_url( $redirect_to = '' ) {
442
 
443
  $query = array(
444
  'password-protected' => 'logout',
445
+ 'redirect_to' => esc_url_raw( $redirect_to ),
446
  );
447
 
448
  if ( empty( $query['redirect_to'] ) ) {
456
  /**
457
  * Logout Link
458
  *
459
+ * @param array $args Link args.
460
  * @return string HTML link tag.
461
  */
462
  public function logout_link( $args = null ) {
466
  return '';
467
  }
468
 
469
+ $args = wp_parse_args(
470
+ $args,
471
+ array(
472
+ 'redirect_to' => '',
473
+ 'text' => __( 'Logout', 'password-protected' ),
474
+ )
475
+ );
476
 
477
  if ( empty( $args['text'] ) ) {
478
  $args['text'] = __( 'Logout', 'password-protected' );
485
  /**
486
  * Logout Link Shortcode
487
  *
488
+ * @param array $args Link args.
489
  * @return string HTML link tag.
490
  */
491
  public function logout_link_shortcode( $atts, $content = null ) {
492
 
493
+ $atts = shortcode_atts(
494
+ array(
495
+ 'redirect_to' => '',
496
+ 'text' => $content,
497
+ ),
498
+ $atts,
499
+ 'logout_link_shortcode'
500
+ );
501
 
502
  return $this->logout_link( $atts );
503
 
517
  /**
518
  * Validate Auth Cookie
519
  *
520
+ * @param string $cookie Cookie string.
521
+ * @param string $scheme Cookie scheme.
522
  * @return boolean Validation successful?
523
  */
524
  public function validate_auth_cookie( $cookie = '', $scheme = '' ) {
539
 
540
  // Quick check to see if an honest cookie has expired
541
  if ( $expired < current_time( 'timestamp' ) ) {
542
+ do_action( 'password_protected_auth_cookie_expired', $cookie_elements );
543
  return false;
544
  }
545
 
546
+ $key = md5( $this->get_site_id() . $this->get_hashed_password() . '|' . $expiration );
547
+ $hash = hash_hmac( 'md5', $this->get_site_id() . '|' . $expiration, $key );
548
 
549
  if ( $hmac != $hash ) {
550
  do_action( 'password_protected_auth_cookie_bad_hash', $cookie_elements );
562
  /**
563
  * Generate Auth Cookie
564
  *
565
+ * @param int $expiration Expiration time in seconds.
566
+ * @param string $scheme Cookie scheme.
567
  * @return string Cookie.
568
  */
569
  public function generate_auth_cookie( $expiration, $scheme = 'auth' ) {
570
 
571
+ $key = md5( $this->get_site_id() . $this->get_hashed_password() . '|' . $expiration );
572
+ $hash = hash_hmac( 'md5', $this->get_site_id() . '|' . $expiration, $key );
573
  $cookie = $this->get_site_id() . '|' . $expiration . '|' . $hash;
574
 
575
  return $cookie;
579
  /**
580
  * Parse Auth Cookie
581
  *
582
+ * @param string $cookie Cookie string.
583
+ * @param string $scheme Cookie scheme.
584
  * @return string Cookie string.
585
  */
586
  public function parse_auth_cookie( $cookie = '', $scheme = '' ) {
614
  *
615
  * @todo
616
  *
617
+ * @param boolean $remember Remember logged in.
618
+ * @param string $secure Secure cookie.
619
  */
620
+ public function set_auth_cookie( $remember = false, $secure = '' ) {
621
 
622
  if ( $remember ) {
623
  $expiration_time = apply_filters( 'password_protected_auth_cookie_expiration', get_option( 'password_protected_remember_me_lifetime', 14 ) * DAY_IN_SECONDS, $remember );
624
+ $expiration = $expire = current_time( 'timestamp' ) + $expiration_time;
625
  } else {
626
  $expiration_time = apply_filters( 'password_protected_auth_cookie_expiration', DAY_IN_SECONDS * 20, $remember );
627
+ $expiration = current_time( 'timestamp' ) + $expiration_time;
628
+ $expire = 0;
629
  }
630
 
631
  if ( '' === $secure ) {
633
  }
634
 
635
  $secure_password_protected_cookie = apply_filters( 'password_protected_secure_password_protected_cookie', false, $secure );
636
+ $password_protected_cookie = $this->generate_auth_cookie( $expiration, 'password_protected' );
637
 
638
  setcookie( $this->cookie_name(), $password_protected_cookie, $expire, COOKIEPATH, COOKIE_DOMAIN, $secure_password_protected_cookie, true );
639
  if ( COOKIEPATH != SITECOOKIEPATH ) {
699
  if ( class_exists( 'CWS_Login_Logo_Plugin' ) ) {
700
 
701
  // Add support for Mark Jaquith's Login Logo plugin
702
+ add_action( 'password_protected_login_head', array( new CWS_Login_Logo_Plugin(), 'login_head' ) );
703
 
704
  } elseif ( class_exists( 'UberLoginLogo' ) ) {
705
 
724
 
725
  if ( $this->errors->get_error_code() ) {
726
 
727
+ $errors = '';
728
  $messages = '';
729
 
730
  foreach ( $this->errors->get_error_codes() as $code ) {
744
  if ( ! empty( $messages ) ) {
745
  echo '<p class="message">' . apply_filters( 'password_protected_login_messages', $messages ) . "</p>\n";
746
  }
 
747
  }
748
 
749
  }
768
  if ( ! empty( $located ) ) {
769
 
770
  $stylesheet_directory = trailingslashit( get_stylesheet_directory() );
771
+ $template_directory = trailingslashit( get_template_directory() );
772
 
773
  if ( $stylesheet_directory == substr( $located, 0, strlen( $stylesheet_directory ) ) ) {
774
  wp_enqueue_style( 'password-protected-login', get_stylesheet_directory_uri() . '/' . $filename );
775
+ } elseif ( $template_directory == substr( $located, 0, strlen( $template_directory ) ) ) {
776
  wp_enqueue_style( 'password-protected-login', get_template_directory_uri() . '/' . $filename );
777
  }
 
778
  }
779
 
780
  }
815
  * Always allow logged in users who require REST API for Gutenberg
816
  * and other admin/plugin compatibility.
817
  *
818
+ * @param WP_REST_Request $access Full details about the request.
819
  * @return WP_Error|boolean
820
  */
821
  public function only_allow_logged_in_rest_access( $access ) {
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: password, protect, password protect, login
4
  Requires at least: 4.6
5
  Tested up to: 6.0
6
  Requires PHP: 5.6
7
- Stable tag: 2.5.1
8
  License: GPLv2 or later
9
 
10
  A very simple way to quickly password protect your WordPress site with a single password.
@@ -20,11 +20,28 @@ Features include:
20
  * Password protect your WordPress site with a single password.
21
  * Option to allow access to feeds.
22
  * Option to allow administrators access without entering password.
23
- * Works with Mark Jaquith's [Login Logo](https://wordpress.org/plugins/login-logo/) plugin.
24
- * Works with the [Uber Login Logo](https://wordpress.org/plugins/uber-login-logo/) plugin.
25
 
26
  > Please note, this plugin works by setting a cookie to allow access to the site. If you are using a caching plugin or web hosting such as WP Engine that has in-built caching, you will need to configure the caching service to be disabled if the Password Protected cookie is set.
27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  = Translations =
29
 
30
  If you would like to translate this plugin you can easily contribute at the [Translating WordPress](https://translate.wordpress.org/projects/wp-plugins/password-protected/) page. The stable plugin needs to be 95% translated for a language file to be available to download/update via WordPress.
@@ -84,6 +101,9 @@ If you would like to translate this plugin you can easily contribute at the [Tra
84
 
85
  == Changelog ==
86
 
 
 
 
87
  = 2.5.1 =
88
  - Fix - Author name conflict resolved
89
 
4
  Requires at least: 4.6
5
  Tested up to: 6.0
6
  Requires PHP: 5.6
7
+ Stable tag: 2.5.2
8
  License: GPLv2 or later
9
 
10
  A very simple way to quickly password protect your WordPress site with a single password.
20
  * Password protect your WordPress site with a single password.
21
  * Option to allow access to feeds.
22
  * Option to allow administrators access without entering password.
23
+ * *New* 👉 Now you can customize the whole password protected screen including the background, font, logo, color e.t.c.
 
24
 
25
  > Please note, this plugin works by setting a cookie to allow access to the site. If you are using a caching plugin or web hosting such as WP Engine that has in-built caching, you will need to configure the caching service to be disabled if the Password Protected cookie is set.
26
 
27
+ = Customize your website’s login page with Login Designer. =
28
+
29
+ [Login Designer](https://wordpress.org/plugins/login-designer/) is the best login customizer plugin for WordPress. It offers contextually displayed options and plugin settings, Custom event triggers, Context-aware previews, powerful custom controls, Live editing…. the list goes on.
30
+
31
+ = LOGIN DESIGNER FEATURES =
32
+
33
+ * Login error messages customization.
34
+ * WordPress login translation.
35
+ * Added enable/disable button in customizer for a language translator.
36
+ * Added pencil icons on editable settings.
37
+ * Customize the background color, radius, padding, shadow, transparency, and checkbox width.
38
+ * Edit the text, font, size, and color of username and password fields.
39
+ * Customize the full display appearance of the login form input fields.
40
+ * Customize the “Remember me” checkbox input element and on the login form.
41
+ * Customize the full display appearance of the login submit button.
42
+ * Import & Export settings by custom CSS.
43
+ * Google ReCaptcha settings.
44
+
45
  = Translations =
46
 
47
  If you would like to translate this plugin you can easily contribute at the [Translating WordPress](https://translate.wordpress.org/projects/wp-plugins/password-protected/) page. The stable plugin needs to be 95% translated for a language file to be available to download/update via WordPress.
101
 
102
  == Changelog ==
103
 
104
+ = 2.5.2 =
105
+ - Made compatibility with [login designer](https://wp.org/plugins/login-designer); Now you can customize the password-protected screen with the customizer using login designer plugin.
106
+
107
  = 2.5.1 =
108
  - Fix - Author name conflict resolved
109
 
theme/password-protected-login.php CHANGED
@@ -107,6 +107,9 @@ if ( $is_iphone ) {
107
  }
108
 
109
  do_action( 'login_enqueue_scripts' );
 
 
 
110
  do_action( 'password_protected_login_head' );
111
 
112
  ?>
@@ -115,16 +118,16 @@ do_action( 'password_protected_login_head' );
115
  <body class="login login-password-protected login-action-password-protected-login wp-core-ui">
116
 
117
  <div id="login">
118
- <h1><a href="<?php echo esc_url( apply_filters( 'password_protected_login_headerurl', home_url( '/' ) ) ); ?>" title="<?php echo esc_attr( apply_filters( 'password_protected_login_headertitle', get_bloginfo( 'name' ) ) ); ?>"><?php bloginfo( 'name' ); ?></a></h1>
119
 
120
  <?php do_action( 'password_protected_login_messages' ); ?>
121
  <?php do_action( 'password_protected_before_login_form' ); ?>
122
 
123
  <form name="loginform" id="loginform" action="<?php echo esc_url( $Password_Protected->login_url() ); ?>" method="post">
124
  <p>
125
- <label for="password_protected_pass"><?php echo apply_filters( 'password_protected_login_password_title', __( 'Password', 'password-protected' ) ); ?><br />
126
- <input type="password" name="password_protected_pwd" id="password_protected_pass" class="input" value="" size="20" tabindex="20" /></label>
127
- </p>
128
 
129
  <?php if ( $Password_Protected->allow_remember_me() ) : ?>
130
  <p class="forgetmenot">
@@ -153,5 +156,9 @@ if(typeof wpOnload=='function')wpOnload();
153
 
154
  <div class="clear"></div>
155
 
 
 
 
 
156
  </body>
157
  </html>
107
  }
108
 
109
  do_action( 'login_enqueue_scripts' );
110
+ if ( in_array( 'login-designer/login-designer.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ), true ) ) {
111
+ do_action( 'password_protected_enqueue_scripts' );
112
+ }
113
  do_action( 'password_protected_login_head' );
114
 
115
  ?>
118
  <body class="login login-password-protected login-action-password-protected-login wp-core-ui">
119
 
120
  <div id="login">
121
+ <h1 id="password-protected-logo"><a href="<?php echo esc_url( apply_filters( 'password_protected_login_headerurl', home_url( '/' ) ) ); ?>" title="<?php echo esc_attr( apply_filters( 'password_protected_login_headertitle', get_bloginfo( 'name' ) ) ); ?>"><?php bloginfo( 'name' ); ?></a></h1>
122
 
123
  <?php do_action( 'password_protected_login_messages' ); ?>
124
  <?php do_action( 'password_protected_before_login_form' ); ?>
125
 
126
  <form name="loginform" id="loginform" action="<?php echo esc_url( $Password_Protected->login_url() ); ?>" method="post">
127
  <p>
128
+ <label for="password_protected_pass"><?php echo esc_attr( apply_filters( 'password_protected_login_password_title', __( 'Password', 'password-protected' ) ) ); ?></label>
129
+ <input type="password" name="password_protected_pwd" id="password_protected_pass" class="input" value="" size="20" tabindex="20" />
130
+ </p>
131
 
132
  <?php if ( $Password_Protected->allow_remember_me() ) : ?>
133
  <p class="forgetmenot">
156
 
157
  <div class="clear"></div>
158
 
159
+ <?php if ( in_array( 'login-designer/login-designer.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ), true ) ) : ?>
160
+ <div id="password-protected-background" style="position:absolute; inset: 0;width: 100%;height: 100%;z-index: -1;transition: opacity 300ms cubic-bezier(0.694, 0, 0.335, 1) 0s"></div>
161
+ <?php endif; ?>
162
+
163
  </body>
164
  </html>