form_field = array(
'0' => array(
'id' => 'basic-auth-plugin-admin-enable',
'title' => __('Enable for wp-admin', 'easy-basic-authentication'),
'callback' => 'basic_auth_plugin_admin_enable_cb',
),
'1' => array(
'id' => 'basic-auth-plugin-enable',
'title' => __('Enable for the entire site (only if wp-admin is enabled)', 'easy-basic-authentication'),
'callback' => 'basic_auth_plugin_enable_cb',
),
'2' => array(
'id' => 'basic-auth-plugin-username',
'title' => __('Username', 'easy-basic-authentication'),
'callback' => 'basic_auth_plugin_username_cb',
),
'3' => array(
'id' => 'basic-auth-plugin-password',
'title' => __('Password', 'easy-basic-authentication'),
'callback' => 'basic_auth_plugin_password_cb',
),
'4' => array(
'id' => 'basic-auth-plugin-admin-log-enable',
'title' => __('Enable access logs', 'easy-basic-authentication'),
'callback' => 'basic_auth_plugin_admin_log_enable_cb',
),
'5' => array(
'id' => 'basic-auth-plugin-alert-enable',
'title' => __('Enable email alert', 'easy-basic-authentication'),
'callback' => 'basic_auth_plugin_alert_enable_cb',
),
'6' => array(
'id' => 'basic-auth-plugin-email-alert',
'title' => __('Email for alert', 'easy-basic-authentication'),
'callback' => 'basic_auth_plugin_alertemail_cb',
),
'7' => array(
'id' => 'basic-auth-plugin-white-list',
'title' => __('Ip White list', 'easy-basic-authentication'),
'callback' => 'basic_auth_plugin_whitelist_cb',
)
);
}
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'
);
foreach($this->form_field as $field) {
add_settings_field(
$field['id'],
esc_html($field['title']),
array($this,$field['callback']),
'basic-auth-plugin-settings',
'basic-auth-plugin-section'
);
}
}
public function basic_auth_plugin_section_cb() {
echo esc_html__('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' );
?>
>
>
printInputText("text","basic_auth_plugin_username",esc_attr( $username ));
}
public function basic_auth_plugin_password_cb() {
$password = get_option( 'basic_auth_plugin_password' )
? __('Password entered', 'easy-basic-authentication')
: __('Enter the password', 'easy-basic-authentication');
$this->printInputText("password","basic_auth_plugin_password",'',$password);
}
public function basic_auth_plugin_admin_log_enable_cb() {
$enable = get_option( 'basic_auth_plugin_admin_log_enable' );
?>
>
>
printInputText("text","basic_auth_plugin_alertemail",esc_attr( $email_alert ),__('Enter the email', 'easy-basic-authentication'));
}
public function basic_auth_plugin_whitelist_cb() {
$white_list = get_option( 'basic_auth_plugin_whitelist' );
$this->printInputText("text","basic_auth_plugin_whitelist",esc_attr( $white_list ),__('White list, separated by comma', 'easy-basic-authentication'));
}
public function printInputText($tipe, $name, $value='', $placeholder = '') {
echo "";
}
public function basic_auth_plugin_save_settings($param) {
if ( isset( $param['eba_submit'] ) ) {
$admin_enable = isset( $param['basic_auth_plugin_admin_enable'] ) ? 1 : 0;
$enable = isset( $param['basic_auth_plugin_enable'] ) ? 1 : 0;
$username = sanitize_text_field( $param['basic_auth_plugin_username'] );
$password = sanitize_text_field( $param['basic_auth_plugin_password'] );
$log_enable = isset( $param['basic_auth_plugin_admin_log_enable'] ) ? 1 : 0;
$alert_enable = isset( $param['basic_auth_plugin_alert_enable'] ) ? 1 : 0;
$alert_email = sanitize_text_field( $param['basic_auth_plugin_alertemail'] );
$white_list = sanitize_text_field( $param['basic_auth_plugin_whitelist'] );
if ( is_email( $alert_email ) || (!$alert_enable && $alert_email=='' ) ) {
update_option( 'basic_auth_plugin_alertemail', $alert_email );
} else {
add_settings_error(
'basic_auth_plugin_alertemail',
'basic_auth_plugin_alertemail_error',
__('Invalid email address', 'easy-basic-authentication'),
'error'
);
return;
}
update_option( 'basic_auth_plugin_admin_enable', $admin_enable );
update_option( 'basic_auth_plugin_enable', $enable );
update_option( 'basic_auth_plugin_username', $username );
update_option( 'basic_auth_plugin_admin_log_enable', $log_enable );
update_option( 'basic_auth_plugin_alert_enable', $alert_enable );
if( $this->validateIpList( $white_list ) || strlen($white_list) == 0 ) {
update_option( 'basic_auth_plugin_whitelist', $white_list );
} else {
add_settings_error(
'basic_auth_plugin_whitelist',
'basic_auth_plugin_whitelist_error',
__('Invalid IP list format. Please enter valid IP addresses separated by commas.', 'easy-basic-authentication'),
'error'
);
return;
}
if ( ! empty( $password ) ) {
$hashed_password = wp_hash_password( $password );
update_option( 'basic_auth_plugin_password', $hashed_password );
}
}
}
public function basic_auth_plugin_settings_page() {
include plugin_dir_path( __FILE__ ) . '../template/settings_page.php';
}
public function validateIpList($white_list) {
$ips = explode(',', $white_list);
foreach ($ips as $ip) {
$ip = trim($ip);
if (!filter_var($ip, FILTER_VALIDATE_IP)) {
return false;
}
}
return true;
}
}