PluginProbe
Easy Basic Authentication – Add basic auth to site or admin area / 1.3.2
Easy Basic Authentication – Add basic auth to site or admin area v1.3.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-class.php +68 -88 1.41.3.2 View file →
@@ -1,19 +1,11 @@
1 1 <?php
2 2
3 -require_once (dirname(__FILE__).'/easy-basic-authentication-log-class.php');
4 -require_once (dirname(__FILE__).'/easy-basic-authentication-emailalert-class.php');
5 -
6 3 class easy_basic_authentication_class {
7 4
8 - private $log;
9 - private $email;
10 5
11 6 public function __construct()
12 7 {
13 - $this->log = new easy_basic_authentication_log_class();
14 - $this->email = new easy_basic_authentication_emailalert_class();
15 -
16 8 if(get_option( 'basic_auth_plugin_admin_enable' )) {
17 9 if (in_array($GLOBALS['pagenow'], array('wp-login.php', 'wp-register.php'))) {
18 10 add_action( 'init', array($this,'basic_auth_admin') );
19 11 }
@@ -36,11 +28,9 @@
36 28
37 29 if ( !isset( $_SERVER['PHP_AUTH_USER'] ) || !isset( $_SERVER['PHP_AUTH_PW'] ) ||
38 30 $_SERVER['PHP_AUTH_USER'] != $user || !wp_check_password( $_SERVER['PHP_AUTH_PW'], $pass ) ) {
39 31
40 - $this->basic_auth_action_failed_access();
41 -
42 - do_action('basic_auth_before_401');
32 + $this->basic_auth_log_failed_access();
43 33
44 34 header( 'WWW-Authenticate: Basic realm="My Website"' );
45 35 header( 'HTTP/1.0 401 Unauthorized' );
46 36 echo 'Autenticazione richiesta';
@@ -52,14 +42,12 @@
52 42 $user = get_option( 'basic_auth_plugin_username' );
53 43 $pass = get_option( 'basic_auth_plugin_password' );
54 44
55 45 if ( !isset( $_SERVER['PHP_AUTH_USER'] ) || !isset( $_SERVER['PHP_AUTH_PW'] ) ||
56 - $_SERVER['PHP_AUTH_USER'] != $user || !wp_check_password( $_SERVER['PHP_AUTH_PW'], $pass ) ) {
46 + $_SERVER['PHP_AUTH_USER'] != $user || !wp_check_password( $_SERVER['PHP_AUTH_PW'], $pass ) ) {
57 47
58 - $this->basic_auth_action_failed_access();
59 -
60 - do_action('basic_auth_before_401');
61 -
48 + $this->basic_auth_log_failed_access();
49 +
62 50 header( 'HTTP/1.1 401 Unauthorized' );
63 51 header( 'WWW-Authenticate: Basic realm="Admin Area"' );
64 52 exit;
65 53 }
@@ -66,21 +54,41 @@
66 54 }
67 55
68 56
69 57 public function basic_auth_plugin_menu() {
58 + ini_set('display_errors', 1);
59 +ini_set('display_startup_errors', 1);
60 +error_reporting(E_ALL);
61 + $access_count = $this->basic_auth_count_not_viewed_log_failed_access();
70 62 add_menu_page(
71 63 __('Configurations for Easy Basic Authentication', 'easy-basic-authentication'),
72 - __('Easy Basic A.', 'easy-basic-authentication'),
64 + __('Easy Basic A.', 'easy-basic-authentication') . '<span class="update-plugins count-' . $access_count . '"><span class="plugin-count">' . $access_count . '</span></span>',
73 65 'manage_options',
74 66 'basic-auth-plugin',
75 67 array($this, 'basic_auth_plugin_settings_page'),
76 68 'dashicons-lock'
77 69 );
78 - if($this->log->is_enabled()) {
79 - $this->log->getMenu();
70 +
71 + add_submenu_page(
72 + 'basic-auth-plugin',
73 + __('Log Page', 'easy-basic-authentication'),
74 + __('Log Page', 'easy-basic-authentication'),
75 + 'manage_options',
76 + 'basic-auth-login',
77 + array($this, 'basic_auth_login_page')
78 + );
79 + }
80 +
81 + public function basic_auth_login_page() {
82 + if(array_key_exists('clear_mode',$_POST)) {
83 + update_option('basic_auth_failure_logs', array());
80 84 }
85 + $user_log_data = array_reverse($this->basic_auth_get_log_failed_access());
86 + include plugin_dir_path( __FILE__ ) . '../template/log_page.php';
87 + $this->update_view();
81 88 }
82 89
90 +
83 91 public function basic_auth_plugin_settings_page() {
84 92 include plugin_dir_path( __FILE__ ) . '../template/settings_page.php';
85 93 }
86 94
@@ -87,9 +95,8 @@
87 95 public function basic_auth_plugin_settings_init() {
88 96 register_setting( 'basic-auth-plugin-settings', 'basic_auth_plugin_admin_enable' );
89 97 register_setting( 'basic-auth-plugin-settings', 'basic_auth_plugin_enable' );
90 98 register_setting( 'basic-auth-plugin-settings', 'basic_auth_plugin_username' );
91 - register_setting( 'basic-auth-plugin-settings', 'basic_auth_plugin_admin_log_enable' );
92 99
93 100 add_settings_section(
94 101 'basic-auth-plugin-section',
95 102 __('Configurations for Easy Basic Authentication', 'easy-basic-authentication'),
@@ -127,32 +134,8 @@
127 134 array($this,'basic_auth_plugin_password_cb'),
128 135 'basic-auth-plugin-settings',
129 136 'basic-auth-plugin-section'
130 137 );
131 -
132 - add_settings_field(
133 - 'basic-auth-plugin-admin-log-enable',
134 - __('Enable access logs', 'easy-basic-authentication'),
135 - array($this,'basic_auth_plugin_admin_log_enable_cb'),
136 - 'basic-auth-plugin-settings',
137 - 'basic-auth-plugin-section'
138 - );
139 -
140 - add_settings_field(
141 - 'basic-auth-plugin-alert-enable',
142 - __('Enable email alert', 'easy-basic-authentication'),
143 - array($this,'basic_auth_plugin_alert_enable_cb'),
144 - 'basic-auth-plugin-settings',
145 - 'basic-auth-plugin-section'
146 - );
147 -
148 - add_settings_field(
149 - 'basic-auth-plugin-email-alert',
150 - __('Email for alert', 'easy-basic-authentication'),
151 - array($this,'basic_auth_plugin_alertemail_cb'),
152 - 'basic-auth-plugin-settings',
153 - 'basic-auth-plugin-section'
154 - );
155 138
156 139 }
157 140
158 141 public function basic_auth_plugin_section_cb() {
@@ -189,30 +172,9 @@
189 172 <input type="password" name="basic_auth_plugin_password" value="" placeholder="<?php echo $password; ?>">
190 173 <?php
191 174 }
192 175
193 - public function basic_auth_plugin_admin_log_enable_cb() {
194 - $enable = get_option( 'basic_auth_plugin_admin_log_enable' );
195 - ?>
196 - <input type="checkbox" name="basic_auth_plugin_admin_log_enable" value="1" <?php checked( $enable, 1 ); ?>>
197 - <?php
198 - }
199 176
200 - public function basic_auth_plugin_alert_enable_cb() {
201 - $enable = get_option( 'basic_auth_plugin_alert_enable' );
202 - ?>
203 - <input type="checkbox" name="basic_auth_plugin_alert_enable" value="1" <?php checked( $enable, 1 ); ?>>
204 - <?php
205 - }
206 -
207 - public function basic_auth_plugin_alertemail_cb() {
208 - $email_alert = get_option( 'basic_auth_plugin_alertemail' );
209 - ?>
210 - <input type="text" name="basic_auth_plugin_alertemail" value="<?php echo esc_attr( $email_alert ); ?>" placeholder="<?php echo __('Enter the email', 'easy-basic-authentication'); ?>">
211 - <?php
212 - }
213 -
214 -
215 177 public function basic_auth_plugin_save_settings() {
216 178 if ( isset( $_POST['eba_submit'] ) ) {
217 179 $admin_enable = isset( $_POST['basic_auth_plugin_admin_enable'] ) ? 1 : 0;
218 180 $enable = isset( $_POST['basic_auth_plugin_enable'] ) ? 1 : 0;
@@ -217,28 +179,12 @@
217 179 $admin_enable = isset( $_POST['basic_auth_plugin_admin_enable'] ) ? 1 : 0;
218 180 $enable = isset( $_POST['basic_auth_plugin_enable'] ) ? 1 : 0;
219 181 $username = sanitize_text_field( $_POST['basic_auth_plugin_username'] );
220 182 $password = sanitize_text_field( $_POST['basic_auth_plugin_password'] );
221 - $log_enable = isset( $_POST['basic_auth_plugin_admin_log_enable'] ) ? 1 : 0;
222 - $alert_enable = isset( $_POST['basic_auth_plugin_alert_enable'] ) ? 1 : 0;
223 - $alert_email = sanitize_text_field( $_POST['basic_auth_plugin_alertemail'] );
224 -
225 - if ( !is_email( $alert_email ) ) {
226 - add_settings_error(
227 - 'basic_auth_plugin_alertemail',
228 - 'basic_auth_plugin_alertemail_error',
229 - __('Invalid email address', 'easy-basic-authentication'),
230 - 'error'
231 - );
232 - } else {
233 - update_option( 'basic_auth_plugin_alertemail', $alert_email );
234 - }
235 183
236 184 update_option( 'basic_auth_plugin_admin_enable', $admin_enable );
237 185 update_option( 'basic_auth_plugin_enable', $enable );
238 186 update_option( 'basic_auth_plugin_username', $username );
239 - update_option( 'basic_auth_plugin_admin_log_enable', $log_enable );
240 - update_option( 'basic_auth_plugin_alert_enable', $alert_enable );
241 187
242 188 if ( ! empty( $password ) ) {
243 189 $hashed_password = wp_hash_password( $password );
244 190 update_option( 'basic_auth_plugin_password', $hashed_password );
@@ -245,14 +191,48 @@
245 191 }
246 192 }
247 193 }
248 194
249 - public function basic_auth_action_failed_access() {
250 - if($this->log->is_enabled()) {
251 - $this->log->update_status($_SERVER);
195 + public function basic_auth_log_failed_access() {
196 + $logs = get_option('basic_auth_failure_logs', array());
197 +
198 + $log_entry = array(
199 + 'id' => uniqid(),
200 + 'ip' => $_SERVER['REMOTE_ADDR'],
201 + 'data' => current_time('mysql'),
202 + 'browser' => $_SERVER['HTTP_USER_AGENT'],
203 + 'viewed' => 0
204 + );
205 +
206 + $logs[] = $log_entry;
207 +
208 + update_option('basic_auth_failure_logs', $logs);
209 + }
210 +
211 + public function basic_auth_get_log_failed_access() {
212 + return get_option('basic_auth_failure_logs', array());
213 + }
214 +
215 + public function basic_auth_count_log_failed_access() {
216 + return count($this->basic_auth_get_log_failed_access());
217 + }
218 +
219 + public function basic_auth_not_viewed_log_failed_access() {
220 + $return_not_viewed = array_filter($this->basic_auth_get_log_failed_access(), function ($entry) {
221 + return isset($entry['viewed']) && $entry['viewed'] === 0;
222 + });
223 + return $return_not_viewed;
224 + }
225 +
226 + public function basic_auth_count_not_viewed_log_failed_access() {
227 + return count($this->basic_auth_not_viewed_log_failed_access());
228 + }
229 +
230 + public function update_view() {
231 + $logs = get_option('basic_auth_failure_logs', array());
232 + foreach ($logs as &$entry) {
233 + $entry['viewed'] = 1;
252 234 }
253 - if($this->email->is_enabled()) {
254 - $this->email->sendAlert($_SERVER);
255 - }
235 + update_option('basic_auth_failure_logs', $logs);
256 236 }
257 -
237 +
258 238 }