basic_auth_log_failed_access(); header( 'WWW-Authenticate: Basic realm="My Website"' ); header( 'HTTP/1.0 401 Unauthorized' ); echo 'Autenticazione richiesta'; exit; } } public function basic_auth_admin() { $user = get_option( 'basic_auth_plugin_username' ); $pass = get_option( 'basic_auth_plugin_password' ); if ( !isset( $_SERVER['PHP_AUTH_USER'] ) || !isset( $_SERVER['PHP_AUTH_PW'] ) || $_SERVER['PHP_AUTH_USER'] != $user || !wp_check_password( $_SERVER['PHP_AUTH_PW'], $pass ) ) { $this->basic_auth_log_failed_access(); header( 'HTTP/1.1 401 Unauthorized' ); header( 'WWW-Authenticate: Basic realm="Admin Area"' ); exit; } } public function basic_auth_plugin_menu() { $access_count = $this->basic_auth_count_not_viewed_log_failed_access(); add_menu_page( __('Configurations for Easy Basic Authentication', 'easy-basic-authentication'), __('Easy Basic A.', 'easy-basic-authentication'), 'manage_options', 'basic-auth-plugin', array($this, 'basic_auth_plugin_settings_page'), 'dashicons-lock' ); if($this->log_is_enabled()) { add_submenu_page( 'basic-auth-plugin', __('Log Page', 'easy-basic-authentication'), __('Log Page', 'easy-basic-authentication'). '' . $access_count . '', 'manage_options', 'basic-auth-login', array($this, 'basic_auth_login_page') ); } } public function basic_auth_login_page() { if(array_key_exists('clear_mode',$_POST)) { update_option('basic_auth_failure_logs', array()); } $user_log_data = array_reverse($this->basic_auth_get_log_failed_access()); include plugin_dir_path( __FILE__ ) . '../template/log_page.php'; $this->update_view(); } public function basic_auth_plugin_settings_page() { include plugin_dir_path( __FILE__ ) . '../template/settings_page.php'; } public function basic_auth_plugin_settings_init() { register_setting( 'basic-auth-plugin-settings', 'basic_auth_plugin_admin_enable' ); register_setting( 'basic-auth-plugin-settings', 'basic_auth_plugin_enable' ); register_setting( 'basic-auth-plugin-settings', 'basic_auth_plugin_username' ); register_setting( 'basic-auth-plugin-settings', 'basic_auth_plugin_admin_log_enable' ); add_settings_section( 'basic-auth-plugin-section', __('Configurations for Easy Basic Authentication', 'easy-basic-authentication'), array($this,'basic_auth_plugin_section_cb'), 'basic-auth-plugin-settings' ); add_settings_field( 'basic-auth-plugin-admin-enable', __('Enable for wp-admin', 'easy-basic-authentication'), array($this,'basic_auth_plugin_admin_enable_cb'), 'basic-auth-plugin-settings', 'basic-auth-plugin-section' ); add_settings_field( 'basic-auth-plugin-enable', __('Enable for the entire site (only if wp-admin is enabled)', 'easy-basic-authentication'), array($this,'basic_auth_plugin_enable_cb'), 'basic-auth-plugin-settings', 'basic-auth-plugin-section' ); add_settings_field( 'basic-auth-plugin-username', __('Username', 'easy-basic-authentication'), array($this,'basic_auth_plugin_username_cb'), 'basic-auth-plugin-settings', 'basic-auth-plugin-section' ); add_settings_field( 'basic-auth-plugin-password', __('Password', 'easy-basic-authentication'), array($this,'basic_auth_plugin_password_cb'), 'basic-auth-plugin-settings', 'basic-auth-plugin-section' ); add_settings_field( 'basic-auth-plugin-admin-log-enable', __('Enable access logs', 'easy-basic-authentication'), array($this,'basic_auth_plugin_admin_log_enable_cb'), 'basic-auth-plugin-settings', 'basic-auth-plugin-section' ); } public function basic_auth_plugin_section_cb() { echo __('Configure basic authentication', 'easy-basic-authentication'); } public function basic_auth_plugin_enable_cb() { $admin_enable = get_option( 'basic_auth_plugin_admin_enable' ); $enable = get_option( 'basic_auth_plugin_enable' ); ?> > > > log_is_enabled()) { $logs = get_option('basic_auth_failure_logs', array()); $log_entry = array( 'id' => uniqid(), 'ip' => $_SERVER['REMOTE_ADDR'], 'data' => current_time('mysql'), 'browser' => $_SERVER['HTTP_USER_AGENT'], 'viewed' => 0 ); $logs[] = $log_entry; update_option('basic_auth_failure_logs', $logs); } } public function basic_auth_get_log_failed_access() { return get_option('basic_auth_failure_logs', array()); } public function basic_auth_count_log_failed_access() { return count($this->basic_auth_get_log_failed_access()); } public function basic_auth_not_viewed_log_failed_access() { $return_not_viewed = array_filter($this->basic_auth_get_log_failed_access(), function ($entry) { return isset($entry['viewed']) && $entry['viewed'] === 0; }); return $return_not_viewed; } public function basic_auth_count_not_viewed_log_failed_access() { return count($this->basic_auth_not_viewed_log_failed_access()); } public function update_view() { $logs = get_option('basic_auth_failure_logs', array()); foreach ($logs as &$entry) { $entry['viewed'] = 1; } update_option('basic_auth_failure_logs', $logs); } public function log_is_enabled() { return get_option( 'basic_auth_plugin_admin_log_enable' ); } }