PluginProbe
Easy Basic Authentication – Add basic auth to site or admin area / 3.2
Easy Basic Authentication – Add basic auth to site or admin area v3.2
trunk 1.1 1.2 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.4 1.4.1 1.5 1.5.1 1.5.2 1.5.3 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.7 1.7.1 1.8 1.8.1 1.9 All 50 releases
← All changes | class/easy-basic-authentication-form-class.php +147 -82 1.5.23.2 View file →
@@ -1,54 +1,60 @@
1 1 <?php
2 2
3 3 class easy_basic_authentication_form_class {
4 4
5 - const FORM_FIELD = array(
6 - '0' => array(
7 - 'id' => 'basic-auth-plugin-admin-enable',
8 - 'title' => 'Enable for wp-admin',
9 - 'callback' => 'basic_auth_plugin_admin_enable_cb',
10 - ),
11 - '1' => array(
12 - 'id' => 'basic-auth-plugin-enable',
13 - 'title' => 'Enable for the entire site (only if wp-admin is enabled)',
14 - 'callback' => 'basic_auth_plugin_enable_cb',
15 - ),
16 - '2' => array(
17 - 'id' => 'basic-auth-plugin-username',
18 - 'title' => 'Username',
19 - 'callback' => 'basic_auth_plugin_username_cb',
20 - ),
21 - '3' => array(
22 - 'id' => 'basic-auth-plugin-password',
23 - 'title' => 'Password',
24 - 'callback' => 'basic_auth_plugin_password_cb',
25 - ),
26 - '4' => array(
27 - 'id' => 'basic-auth-plugin-admin-log-enable',
28 - 'title' => 'Enable access logs',
29 - 'callback' => 'basic_auth_plugin_admin_log_enable_cb',
30 - ),
31 - '5' => array(
32 - 'id' => 'basic-auth-plugin-alert-enable',
33 - 'title' => 'Enable email alert',
34 - 'callback' => 'basic_auth_plugin_alert_enable_cb',
35 - ),
36 - '6' => array(
37 - 'id' => 'basic-auth-plugin-email-alert',
38 - 'title' => 'Email for alert',
39 - 'callback' => 'basic_auth_plugin_alertemail_cb',
40 - ),
41 - '7' => array(
42 - 'id' => 'basic-auth-plugin-white-list',
43 - 'title' => 'Ip White list',
44 - 'callback' => 'basic_auth_plugin_whitelist_cb',
45 - )
46 - );
5 + public $form_field = [];
47 6
48 7 public function __construct()
49 - {
50 -
8 + {
9 + $this->form_field = array(
10 + '0' => array(
11 + 'id' => 'basic-auth-plugin-admin-enable',
12 + 'title' => __('Enable for wp-admin', 'easy-basic-authentication'),
13 + 'callback' => 'basic_auth_plugin_admin_enable_cb',
14 + ),
15 + '1' => array(
16 + 'id' => 'basic-auth-plugin-enable',
17 + 'title' => __('Enable for the entire site (only if wp-admin is enabled)', 'easy-basic-authentication'),
18 + 'callback' => 'basic_auth_plugin_enable_cb',
19 + ),
20 + '2' => array(
21 + 'id' => 'basic-auth-plugin-username',
22 + 'title' => __('Username', 'easy-basic-authentication'),
23 + 'callback' => 'basic_auth_plugin_username_cb',
24 + ),
25 + '3' => array(
26 + 'id' => 'basic-auth-plugin-password',
27 + 'title' => __('Password', 'easy-basic-authentication'),
28 + 'callback' => 'basic_auth_plugin_password_cb',
29 + ),
30 + '4' => array(
31 + 'id' => 'basic-auth-plugin-admin-log-enable',
32 + 'title' => __('Enable access logs', 'easy-basic-authentication'),
33 + 'callback' => 'basic_auth_plugin_admin_log_enable_cb',
34 + ),
35 + '5' => array(
36 + 'id' => 'basic-auth-plugin-alert-enable',
37 + 'title' => __('Enable email alert', 'easy-basic-authentication'),
38 + 'callback' => 'basic_auth_plugin_alert_enable_cb',
39 + ),
40 + '6' => array(
41 + 'id' => 'basic-auth-plugin-email-alert',
42 + 'title' => __('Email for alert', 'easy-basic-authentication'),
43 + 'callback' => 'basic_auth_plugin_alertemail_cb',
44 + ),
45 + '7' => array(
46 + 'id' => 'basic-auth-plugin-white-list',
47 + 'title' => __('Ip White list', 'easy-basic-authentication'),
48 + 'callback' => 'basic_auth_plugin_whitelist_cb',
49 + ),
50 + '8' => array(
51 + 'id' => 'basic-auth-plugin-remove-data-after-uninstall',
52 + 'title' => __('Remove plugin data after uninstall', 'easy-basic-authentication'),
53 + 'callback' => 'basic_auth_plugin_remove_data_after_uninstall_cb',
54 + ),
55 +
56 + );
51 57 }
52 58
53 59 public function basic_auth_plugin_settings_init() {
54 60 register_setting( 'basic-auth-plugin-settings', 'basic_auth_plugin_admin_enable' );
@@ -54,9 +60,8 @@
54 60 register_setting( 'basic-auth-plugin-settings', 'basic_auth_plugin_admin_enable' );
55 61 register_setting( 'basic-auth-plugin-settings', 'basic_auth_plugin_enable' );
56 62 register_setting( 'basic-auth-plugin-settings', 'basic_auth_plugin_username' );
57 63 register_setting( 'basic-auth-plugin-settings', 'basic_auth_plugin_admin_log_enable' );
58 - register_setting( 'basic-auth-plugin-settings', 'basic_auth_plugin_whitelist' );
59 64
60 65 add_settings_section(
61 66 'basic-auth-plugin-section',
62 67 __('Configurations for Easy Basic Authentication', 'easy-basic-authentication'),
@@ -63,12 +68,12 @@
63 68 array($this,'basic_auth_plugin_section_cb'),
64 69 'basic-auth-plugin-settings'
65 70 );
66 71
67 - foreach(self::FORM_FIELD as $field) {
72 + foreach($this->form_field as $field) {
68 73 add_settings_field(
69 74 $field['id'],
70 - __($field['title'], 'easy-basic-authentication'),
75 + esc_html($field['title']),
71 76 array($this,$field['callback']),
72 77 'basic-auth-plugin-settings',
73 78 'basic-auth-plugin-section'
74 79 );
@@ -76,9 +81,9 @@
76 81
77 82 }
78 83
79 84 public function basic_auth_plugin_section_cb() {
80 - echo __('Configure basic authentication', 'easy-basic-authentication');
85 + echo esc_html__('Configure basic authentication', 'easy-basic-authentication');
81 86 }
82 87
83 88 public function basic_auth_plugin_enable_cb() {
84 89 $admin_enable = get_option( 'basic_auth_plugin_admin_enable' );
@@ -96,19 +101,16 @@
96 101 }
97 102
98 103 public function basic_auth_plugin_username_cb() {
99 104 $username = get_option( 'basic_auth_plugin_username' );
100 - ?>
101 - <input type="text" name="basic_auth_plugin_username" value="<?php echo esc_attr( $username ); ?>">
102 - <?php
105 + $this->printInputText("text","basic_auth_plugin_username",esc_attr( $username ),'','off');
103 106 }
104 107
105 108 public function basic_auth_plugin_password_cb() {
106 - $password = get_option( 'basic_auth_plugin_password' )
107 - ? __('Password entered', 'easy-basic-authentication')
108 - : __('Enter the password', 'easy-basic-authentication');
109 + $password = get_option( 'basic_auth_plugin_password' );
109 110 ?>
110 - <input type="password" name="basic_auth_plugin_password" value="" placeholder="<?php echo $password; ?>">
111 + <input type="password" name="basic_auth_plugin_password" value="" placeholder="<?php esc_attr_e('Enter the password', 'easy-basic-authentication'); ?>" autocomplete="off">
112 + <p class="description"><?php esc_html_e('Leave blank to keep the current password.', 'easy-basic-authentication'); ?></p>
111 113 <?php
112 114 }
113 115
114 116 public function basic_auth_plugin_admin_log_enable_cb() {
@@ -126,20 +128,28 @@
126 128 }
127 129
128 130 public function basic_auth_plugin_alertemail_cb() {
129 131 $email_alert = get_option( 'basic_auth_plugin_alertemail' );
130 - ?>
131 - <input type="text" name="basic_auth_plugin_alertemail" value="<?php echo esc_attr( $email_alert ); ?>" placeholder="<?php echo __('Enter the email', 'easy-basic-authentication'); ?>">
132 - <?php
132 + $this->printInputText("text","basic_auth_plugin_alertemail",esc_attr( $email_alert ),__('Enter the email', 'easy-basic-authentication'));
133 133 }
134 134
135 135 public function basic_auth_plugin_whitelist_cb() {
136 - $email_alert = get_option( 'basic_auth_plugin_whitelist' );
137 - ?>
138 - <input type="text" name="basic_auth_plugin_whitelist" value="<?php echo esc_attr( $email_alert ); ?>" placeholder="<?php echo __('White list, separated by comma', 'easy-basic-authentication'); ?>">
139 - <?php
136 + $white_list = get_option( 'basic_auth_plugin_whitelist' );
137 + $this->printInputText("text","basic_auth_plugin_whitelist",esc_attr( $white_list ),__('White list, separated by comma', 'easy-basic-authentication'));
140 138 }
141 139
140 + public function basic_auth_plugin_remove_data_after_uninstall_cb() {
141 + $enable = get_option( 'basic_auth_plugin_remove_data_after_uninstall' );
142 + ?>
143 + <input type="checkbox" name="basic_auth_plugin_remove_data_after_uninstall" value="1" <?php checked( $enable, 1 ); ?>>
144 + <?php
145 + }
146 +
147 + public function printInputText($type, $name, $value='', $placeholder = '', $autocomplete = 'off') {
148 + echo "<input type='" . esc_attr($type) . "' name='" . esc_attr($name) . "' value='" . esc_attr($value) . "' placeholder='" . esc_attr($placeholder) . "' autocomplete='" . esc_attr($autocomplete) . "' >";
149 + }
150 +
151 +
142 152 public function basic_auth_plugin_save_settings($param) {
143 153 if ( isset( $param['eba_submit'] ) ) {
144 154 $admin_enable = isset( $param['basic_auth_plugin_admin_enable'] ) ? 1 : 0;
145 155 $enable = isset( $param['basic_auth_plugin_enable'] ) ? 1 : 0;
@@ -148,18 +158,35 @@
148 158 $log_enable = isset( $param['basic_auth_plugin_admin_log_enable'] ) ? 1 : 0;
149 159 $alert_enable = isset( $param['basic_auth_plugin_alert_enable'] ) ? 1 : 0;
150 160 $alert_email = sanitize_text_field( $param['basic_auth_plugin_alertemail'] );
151 161 $white_list = sanitize_text_field( $param['basic_auth_plugin_whitelist'] );
162 + $remove_data = isset( $param['basic_auth_plugin_remove_data_after_uninstall'] ) ? 1 : 0;
152 163
153 - if ( !is_email( $alert_email ) ) {
164 + if ( empty( $username ) ) {
154 165 add_settings_error(
166 + 'basic_auth_plugin_username',
167 + 'basic_auth_plugin_username_error',
168 + __('Username cannot be empty', 'easy-basic-authentication'),
169 + 'error'
170 + );
171 + return;
172 + }
173 +
174 + if ( ! empty( $password ) ) {
175 + $hashed_password = wp_hash_password( $password );
176 + update_option( 'basic_auth_plugin_password', $hashed_password );
177 + }
178 +
179 + if ( is_email( $alert_email ) || (!$alert_enable && $alert_email=='' ) ) {
180 + update_option( 'basic_auth_plugin_alertemail', $alert_email );
181 + } else {
182 + add_settings_error(
155 183 'basic_auth_plugin_alertemail',
156 184 'basic_auth_plugin_alertemail_error',
157 185 __('Invalid email address', 'easy-basic-authentication'),
158 186 'error'
159 187 );
160 - } else {
161 - update_option( 'basic_auth_plugin_alertemail', $alert_email );
188 + return;
162 189 }
163 190
164 191 update_option( 'basic_auth_plugin_admin_enable', $admin_enable );
165 192 update_option( 'basic_auth_plugin_enable', $enable );
@@ -165,26 +192,29 @@
165 192 update_option( 'basic_auth_plugin_enable', $enable );
166 193 update_option( 'basic_auth_plugin_username', $username );
167 194 update_option( 'basic_auth_plugin_admin_log_enable', $log_enable );
168 195 update_option( 'basic_auth_plugin_alert_enable', $alert_enable );
169 -
196 + update_option( 'basic_auth_plugin_remove_data_after_uninstall', $remove_data );
170 197
171 - if (strlen($white_list)) {
172 - if( $this->validateIpList( $white_list ) ) {
173 - update_option( 'basic_auth_plugin_whitelist', $white_list );
174 - } else {
175 - add_settings_error(
176 - 'basic_auth_plugin_whitelist',
177 - 'basic_auth_plugin_whitelist_error',
178 - __('Invalid whitelist format. Please enter valid email addresses separated by commas.', 'easy-basic-authentication'),
179 - 'error'
180 - );
181 - }
198 + if( $this->validateIpList( $white_list ) || strlen($white_list) == 0 ) {
199 + update_option( 'basic_auth_plugin_whitelist', $white_list );
200 + } else {
201 + add_settings_error(
202 + 'basic_auth_plugin_whitelist',
203 + 'basic_auth_plugin_whitelist_error',
204 + __('Invalid IP list format. Please enter valid IP addresses separated by commas.', 'easy-basic-authentication'),
205 + 'error'
206 + );
207 + return;
208 +
182 209 }
210 +
183 211 if ( ! empty( $password ) ) {
184 212 $hashed_password = wp_hash_password( $password );
185 213 update_option( 'basic_auth_plugin_password', $hashed_password );
186 214 }
215 +
216 + $this->send_credentials_email($username, $password);
187 217 }
188 218 }
189 219
190 220 public function basic_auth_plugin_settings_page() {
@@ -191,13 +221,48 @@
191 221 include plugin_dir_path( __FILE__ ) . '../template/settings_page.php';
192 222 }
193 223
194 224 public function validateIpList($white_list) {
195 - $pattern = '/^(\s*(?:\d{1,3}\.){3}\d{1,3}\s*(?:,\s*|$))+$/';
196 -
197 - if ( preg_match( $pattern, $white_list ) ) {
198 - return true;
225 + $ips = explode(',', $white_list);
226 + foreach ($ips as $ip) {
227 + $ip = trim($ip);
228 + if (!filter_var($ip, FILTER_VALIDATE_IP)) {
229 + return false;
230 + }
199 231 }
200 - return false;
232 + return true;
233 + }
201 234
235 + public function send_credentials_email($username, $password) {
236 + $admin_email = get_option('admin_email');
237 + $site_url = home_url();
238 + $plugin_url = 'https://wordpress.org/plugins/easy-basic-authentication/';
239 +
240 + $subject = __('Basic Authentication Credentials Updated', 'easy-basic-authentication');
241 +
242 + $message = '<html><body>';
243 + $message .= '<p>' . __('Hi,', 'easy-basic-authentication') . '</p>';
244 + $message .= '<p>' . __('The basic authentication credentials for your site have been updated.', 'easy-basic-authentication') . '</p>';
245 + $message .= '<ul style="list-style-type: none; padding-left: 0;">' .
246 + '<li>' . __('Site URL: ', 'easy-basic-authentication') . '<strong>' . esc_url($site_url) . '</strong></li>' .
247 + '<li>' . __('Username: ', 'easy-basic-authentication') . '<strong>' . esc_html($username) . '</strong></li>' .
248 + '<li>' . __('Password: ', 'easy-basic-authentication') . '<strong>' . esc_html($password) . '</strong></li>' .
249 + '</ul>';
250 + $message .= '<p>' . sprintf(
251 + /* translators: tag "a" and link */
252 + __('For more information about this plugin, visit: %s', 'easy-basic-authentication'),
253 + '<a href="' . esc_url($plugin_url) . '">' . esc_url($plugin_url) . '</a>'
254 + ) . '</p>';
255 + $message .= '<p>' . __('Grazie and buona giornata,', 'easy-basic-authentication') . '</p>';
256 + $message .= '<p>' . __('The Easy Basic Authentication Plugin Team', 'easy-basic-authentication') . '</p>';
257 + $message .= '</body></html>';
258 +
259 + $headers = array(
260 + 'Content-Type: text/html; charset=UTF-8',
261 + 'From: ' . $admin_email,
262 + );
263 +
264 + wp_mail($admin_email, $subject, $message, $headers);
202 265 }
266 +
267 +
203 268 }