PluginProbe
Easy Basic Authentication – Add basic auth to site or admin area / 2.7
Easy Basic Authentication – Add basic auth to site or admin area v2.7
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
easy-basic-authentication / class / easy-basic-authentication-form-class.php

easy-basic-authentication-form-class.php in Easy Basic Authentication – Add basic auth to site or admin area 2.7, at class/easy-basic-authentication-form-class.php

252 lines 11.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 class easy_basic_authentication_form_class {
4
5 public $form_field = [];
6
7 public function __construct()
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 );
51 }
52
53 public function basic_auth_plugin_settings_init() {
54 register_setting( 'basic-auth-plugin-settings', 'basic_auth_plugin_admin_enable' );
55 register_setting( 'basic-auth-plugin-settings', 'basic_auth_plugin_enable' );
56 register_setting( 'basic-auth-plugin-settings', 'basic_auth_plugin_username' );
57 register_setting( 'basic-auth-plugin-settings', 'basic_auth_plugin_admin_log_enable' );
58
59 add_settings_section(
60 'basic-auth-plugin-section',
61 __('Configurations for Easy Basic Authentication', 'easy-basic-authentication'),
62 array($this,'basic_auth_plugin_section_cb'),
63 'basic-auth-plugin-settings'
64 );
65
66 foreach($this->form_field as $field) {
67 add_settings_field(
68 $field['id'],
69 esc_html($field['title']),
70 array($this,$field['callback']),
71 'basic-auth-plugin-settings',
72 'basic-auth-plugin-section'
73 );
74 }
75
76 }
77
78 public function basic_auth_plugin_section_cb() {
79 echo esc_html__('Configure basic authentication', 'easy-basic-authentication');
80 }
81
82 public function basic_auth_plugin_enable_cb() {
83 $admin_enable = get_option( 'basic_auth_plugin_admin_enable' );
84 $enable = get_option( 'basic_auth_plugin_enable' );
85 ?>
86 <input type="checkbox" name="basic_auth_plugin_enable" value="1" <?php checked( $enable, 1 ); ?><?php disabled( !$admin_enable ); ?>>
87 <?php
88 }
89
90 public function basic_auth_plugin_admin_enable_cb() {
91 $enable = get_option( 'basic_auth_plugin_admin_enable' );
92 ?>
93 <input type="checkbox" name="basic_auth_plugin_admin_enable" value="1" <?php checked( $enable, 1 ); ?>>
94 <?php
95 }
96
97 public function basic_auth_plugin_username_cb() {
98 $username = get_option( 'basic_auth_plugin_username' );
99 $this->printInputText("text","basic_auth_plugin_username",esc_attr( $username ),'','off');
100 }
101
102 public function basic_auth_plugin_password_cb() {
103 $password = get_option( 'basic_auth_plugin_password' );
104 ?>
105 <input type="password" name="basic_auth_plugin_password" value="" placeholder="<?php esc_attr_e('Enter the password', 'easy-basic-authentication'); ?>" autocomplete="off">
106 <p class="description"><?php esc_html_e('Leave blank to keep the current password.', 'easy-basic-authentication'); ?></p>
107 <?php
108 }
109
110 public function basic_auth_plugin_admin_log_enable_cb() {
111 $enable = get_option( 'basic_auth_plugin_admin_log_enable' );
112 ?>
113 <input type="checkbox" name="basic_auth_plugin_admin_log_enable" value="1" <?php checked( $enable, 1 ); ?>>
114 <?php
115 }
116
117 public function basic_auth_plugin_alert_enable_cb() {
118 $enable = get_option( 'basic_auth_plugin_alert_enable' );
119 ?>
120 <input type="checkbox" name="basic_auth_plugin_alert_enable" value="1" <?php checked( $enable, 1 ); ?>>
121 <?php
122 }
123
124 public function basic_auth_plugin_alertemail_cb() {
125 $email_alert = get_option( 'basic_auth_plugin_alertemail' );
126 $this->printInputText("text","basic_auth_plugin_alertemail",esc_attr( $email_alert ),__('Enter the email', 'easy-basic-authentication'));
127 }
128
129 public function basic_auth_plugin_whitelist_cb() {
130 $white_list = get_option( 'basic_auth_plugin_whitelist' );
131 $this->printInputText("text","basic_auth_plugin_whitelist",esc_attr( $white_list ),__('White list, separated by comma', 'easy-basic-authentication'));
132 }
133
134 public function printInputText($type, $name, $value='', $placeholder = '', $autocomplete = 'off') {
135 echo "<input type='" . esc_attr($type) . "' name='" . esc_attr($name) . "' value='" . esc_attr($value) . "' placeholder='" . esc_attr($placeholder) . "' autocomplete='" . esc_attr($autocomplete) . "' >";
136 }
137
138
139 public function basic_auth_plugin_save_settings($param) {
140 if ( isset( $param['eba_submit'] ) ) {
141 $admin_enable = isset( $param['basic_auth_plugin_admin_enable'] ) ? 1 : 0;
142 $enable = isset( $param['basic_auth_plugin_enable'] ) ? 1 : 0;
143 $username = sanitize_text_field( $param['basic_auth_plugin_username'] );
144 $password = sanitize_text_field( $param['basic_auth_plugin_password'] );
145 $log_enable = isset( $param['basic_auth_plugin_admin_log_enable'] ) ? 1 : 0;
146 $alert_enable = isset( $param['basic_auth_plugin_alert_enable'] ) ? 1 : 0;
147 $alert_email = sanitize_text_field( $param['basic_auth_plugin_alertemail'] );
148 $white_list = sanitize_text_field( $param['basic_auth_plugin_whitelist'] );
149
150 if ( empty( $username ) ) {
151 add_settings_error(
152 'basic_auth_plugin_username',
153 'basic_auth_plugin_username_error',
154 __('Username cannot be empty', 'easy-basic-authentication'),
155 'error'
156 );
157 return;
158 }
159
160 if ( ! empty( $password ) ) {
161 $hashed_password = wp_hash_password( $password );
162 update_option( 'basic_auth_plugin_password', $hashed_password );
163 }
164
165 if ( is_email( $alert_email ) || (!$alert_enable && $alert_email=='' ) ) {
166 update_option( 'basic_auth_plugin_alertemail', $alert_email );
167 } else {
168 add_settings_error(
169 'basic_auth_plugin_alertemail',
170 'basic_auth_plugin_alertemail_error',
171 __('Invalid email address', 'easy-basic-authentication'),
172 'error'
173 );
174 return;
175 }
176
177 update_option( 'basic_auth_plugin_admin_enable', $admin_enable );
178 update_option( 'basic_auth_plugin_enable', $enable );
179 update_option( 'basic_auth_plugin_username', $username );
180 update_option( 'basic_auth_plugin_admin_log_enable', $log_enable );
181 update_option( 'basic_auth_plugin_alert_enable', $alert_enable );
182
183 if( $this->validateIpList( $white_list ) || strlen($white_list) == 0 ) {
184 update_option( 'basic_auth_plugin_whitelist', $white_list );
185 } else {
186 add_settings_error(
187 'basic_auth_plugin_whitelist',
188 'basic_auth_plugin_whitelist_error',
189 __('Invalid IP list format. Please enter valid IP addresses separated by commas.', 'easy-basic-authentication'),
190 'error'
191 );
192 return;
193
194 }
195
196 if ( ! empty( $password ) ) {
197 $hashed_password = wp_hash_password( $password );
198 update_option( 'basic_auth_plugin_password', $hashed_password );
199 }
200
201 $this->send_credentials_email($username, $password);
202 }
203 }
204
205 public function basic_auth_plugin_settings_page() {
206 include plugin_dir_path( __FILE__ ) . '../template/settings_page.php';
207 }
208
209 public function validateIpList($white_list) {
210 $ips = explode(',', $white_list);
211 foreach ($ips as $ip) {
212 $ip = trim($ip);
213 if (!filter_var($ip, FILTER_VALIDATE_IP)) {
214 return false;
215 }
216 }
217 return true;
218 }
219
220 public function send_credentials_email($username, $password) {
221 $admin_email = get_option('admin_email');
222 $site_url = home_url();
223 $plugin_url = 'https://wordpress.org/plugins/easy-basic-authentication/';
224
225 $subject = __('Basic Authentication Credentials Updated', 'easy-basic-authentication');
226
227 $message = '<html><body>';
228 $message .= '<p>' . __('Hi,', 'easy-basic-authentication') . '</p>';
229 $message .= '<p>' . __('The basic authentication credentials for your site have been updated.', 'easy-basic-authentication') . '</p>';
230 $message .= '<ul style="list-style-type: none; padding-left: 0;">' .
231 '<li>' . __('Site URL: ', 'easy-basic-authentication') . '<strong>' . esc_url($site_url) . '</strong></li>' .
232 '<li>' . __('Username: ', 'easy-basic-authentication') . '<strong>' . esc_html($username) . '</strong></li>' .
233 '<li>' . __('Password: ', 'easy-basic-authentication') . '<strong>' . esc_html($password) . '</strong></li>' .
234 '</ul>';
235 $message .= '<p>' . sprintf(
236 __('For more information about this plugin, visit: %s', 'easy-basic-authentication'),
237 '<a href="' . esc_url($plugin_url) . '">' . esc_url($plugin_url) . '</a>'
238 ) . '</p>';
239 $message .= '<p>' . __('Grazie and buona giornata,', 'easy-basic-authentication') . '</p>';
240 $message .= '<p>' . __('The Easy Basic Authentication Plugin Team', 'easy-basic-authentication') . '</p>';
241 $message .= '</body></html>';
242
243 $headers = array(
244 'Content-Type: text/html; charset=UTF-8',
245 'From: ' . $admin_email,
246 );
247
248 wp_mail($admin_email, $subject, $message, $headers);
249 }
250
251
252 }