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' );
}
}