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 +158 -56 1.53.2 View file →
@@ -1,49 +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 - );
5 + public $form_field = [];
42 6
43 7 public function __construct()
44 - {
45 -
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 + );
46 57 }
47 58
48 59 public function basic_auth_plugin_settings_init() {
49 60 register_setting( 'basic-auth-plugin-settings', 'basic_auth_plugin_admin_enable' );
@@ -57,12 +68,12 @@
57 68 array($this,'basic_auth_plugin_section_cb'),
58 69 'basic-auth-plugin-settings'
59 70 );
60 71
61 - foreach(self::FORM_FIELD as $field) {
72 + foreach($this->form_field as $field) {
62 73 add_settings_field(
63 74 $field['id'],
64 - __($field['title'], 'easy-basic-authentication'),
75 + esc_html($field['title']),
65 76 array($this,$field['callback']),
66 77 'basic-auth-plugin-settings',
67 78 'basic-auth-plugin-section'
68 79 );
@@ -70,9 +81,9 @@
70 81
71 82 }
72 83
73 84 public function basic_auth_plugin_section_cb() {
74 - echo __('Configure basic authentication', 'easy-basic-authentication');
85 + echo esc_html__('Configure basic authentication', 'easy-basic-authentication');
75 86 }
76 87
77 88 public function basic_auth_plugin_enable_cb() {
78 89 $admin_enable = get_option( 'basic_auth_plugin_admin_enable' );
@@ -90,19 +101,16 @@
90 101 }
91 102
92 103 public function basic_auth_plugin_username_cb() {
93 104 $username = get_option( 'basic_auth_plugin_username' );
94 - ?>
95 - <input type="text" name="basic_auth_plugin_username" value="<?php echo esc_attr( $username ); ?>">
96 - <?php
105 + $this->printInputText("text","basic_auth_plugin_username",esc_attr( $username ),'','off');
97 106 }
98 107
99 108 public function basic_auth_plugin_password_cb() {
100 - $password = get_option( 'basic_auth_plugin_password' )
101 - ? __('Password entered', 'easy-basic-authentication')
102 - : __('Enter the password', 'easy-basic-authentication');
109 + $password = get_option( 'basic_auth_plugin_password' );
103 110 ?>
104 - <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>
105 113 <?php
106 114 }
107 115
108 116 public function basic_auth_plugin_admin_log_enable_cb() {
@@ -120,13 +128,28 @@
120 128 }
121 129
122 130 public function basic_auth_plugin_alertemail_cb() {
123 131 $email_alert = get_option( 'basic_auth_plugin_alertemail' );
124 - ?>
125 - <input type="text" name="basic_auth_plugin_alertemail" value="<?php echo esc_attr( $email_alert ); ?>" placeholder="<?php echo __('Enter the email', 'easy-basic-authentication'); ?>">
126 - <?php
132 + $this->printInputText("text","basic_auth_plugin_alertemail",esc_attr( $email_alert ),__('Enter the email', 'easy-basic-authentication'));
127 133 }
134 +
135 + public function basic_auth_plugin_whitelist_cb() {
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'));
138 + }
128 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 +
129 152 public function basic_auth_plugin_save_settings($param) {
130 153 if ( isset( $param['eba_submit'] ) ) {
131 154 $admin_enable = isset( $param['basic_auth_plugin_admin_enable'] ) ? 1 : 0;
132 155 $enable = isset( $param['basic_auth_plugin_enable'] ) ? 1 : 0;
@@ -134,18 +157,36 @@
134 157 $password = sanitize_text_field( $param['basic_auth_plugin_password'] );
135 158 $log_enable = isset( $param['basic_auth_plugin_admin_log_enable'] ) ? 1 : 0;
136 159 $alert_enable = isset( $param['basic_auth_plugin_alert_enable'] ) ? 1 : 0;
137 160 $alert_email = sanitize_text_field( $param['basic_auth_plugin_alertemail'] );
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;
138 163
139 - if ( !is_email( $alert_email ) ) {
164 + if ( empty( $username ) ) {
140 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(
141 183 'basic_auth_plugin_alertemail',
142 184 'basic_auth_plugin_alertemail_error',
143 185 __('Invalid email address', 'easy-basic-authentication'),
144 186 'error'
145 187 );
146 - } else {
147 - update_option( 'basic_auth_plugin_alertemail', $alert_email );
188 + return;
148 189 }
149 190
150 191 update_option( 'basic_auth_plugin_admin_enable', $admin_enable );
151 192 update_option( 'basic_auth_plugin_enable', $enable );
@@ -151,13 +192,29 @@
151 192 update_option( 'basic_auth_plugin_enable', $enable );
152 193 update_option( 'basic_auth_plugin_username', $username );
153 194 update_option( 'basic_auth_plugin_admin_log_enable', $log_enable );
154 195 update_option( 'basic_auth_plugin_alert_enable', $alert_enable );
155 -
196 + update_option( 'basic_auth_plugin_remove_data_after_uninstall', $remove_data );
197 +
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 +
209 + }
210 +
156 211 if ( ! empty( $password ) ) {
157 212 $hashed_password = wp_hash_password( $password );
158 213 update_option( 'basic_auth_plugin_password', $hashed_password );
159 214 }
215 +
216 + $this->send_credentials_email($username, $password);
160 217 }
161 218 }
162 219
163 220 public function basic_auth_plugin_settings_page() {
@@ -162,5 +219,50 @@
162 219
163 220 public function basic_auth_plugin_settings_page() {
164 221 include plugin_dir_path( __FILE__ ) . '../template/settings_page.php';
165 222 }
223 +
224 + public function validateIpList($white_list) {
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 + }
231 + }
232 + return true;
233 + }
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);
265 + }
266 +
267 +
166 268 }