Protection of WordPress logins
This commit is contained in:
@ -0,0 +1,56 @@
|
||||
<?php
|
||||
function updateBlockOrAllowList($postVars)
|
||||
{
|
||||
$listType = $postVars['save_kompass_balist_list_type'];
|
||||
|
||||
$saveIPList = [];
|
||||
if (isset($postVars['listElements'])) {
|
||||
foreach ($postVars['listElements'] as $curIp) {
|
||||
$curIp = trim($curIp);
|
||||
if ($curIp !== '') {
|
||||
$saveIPList[] = $curIp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (count($postVars['new_ips']) == 1) {
|
||||
foreach (explode(PHP_EOL, $postVars['new_ips'][0]) as $newIp) {
|
||||
$newIp = trim($newIp);
|
||||
if ('' !== $newIp) {
|
||||
$saveIPList[] = $newIp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
update_option('kompass_limit_login_' . $listType, $saveIPList);
|
||||
}
|
||||
|
||||
function kompass_print_block_allow_form($listType) {
|
||||
$elements = get_option('kompass_limit_login_' . $listType, []);
|
||||
|
||||
?>
|
||||
|
||||
<input type="hidden" name="save_kompass_balist_list_type" value="<?= $listType; ?>" />
|
||||
|
||||
<?php
|
||||
foreach ($elements as $currentIp) {
|
||||
?>
|
||||
<p>
|
||||
<input type="text" name="listElements[]" value="<?= $currentIp ?>" style="width: 350px;" /><br />
|
||||
<label style="cursor: default; color: #a0a0a0; fot-size: 9pt; font-style: italic"><?= __('Zum Löschen frei lassen', BDP_LV_PLUGIN_SLUG); ?></label>
|
||||
</p>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<div class="kompass_setting_box">
|
||||
<h3><?= __('IP-Adresse hinzufügen', BDP_LV_PLUGIN_SLUG); ?></h3>
|
||||
<p>
|
||||
<textarea
|
||||
placeholder="<?= __('Please use line breaks to enter multiple ips', BDP_LV_PLUGIN_SLUG); ?>"
|
||||
name="new_ips[]"
|
||||
style="width: 350px;" rows="5"></textarea>
|
||||
</p>
|
||||
</div>
|
||||
<?php
|
||||
}
|
116
modules/LimitLoginAttempts/includes/gui_elements.php
Normal file
116
modules/LimitLoginAttempts/includes/gui_elements.php
Normal file
@ -0,0 +1,116 @@
|
||||
<?php
|
||||
|
||||
// Callback-Funktion für die Einstellungsseite
|
||||
function custom_settings_section_callback() {
|
||||
echo '<input type="hidden" name="update_options" value="true" />';
|
||||
}
|
||||
|
||||
function _kompass_limit_logins_settings_callback($args) {
|
||||
$setting = get_option($args['setting'], null);
|
||||
if (null === $setting) {
|
||||
$setting = '';
|
||||
}
|
||||
|
||||
$value = esc_attr($setting);
|
||||
if (isset($args['unit_division'])) {
|
||||
$value = (int)$value / (int)$args['unit_division'];
|
||||
}
|
||||
|
||||
kompass_print_textbox($args['setting'], $value);
|
||||
}
|
||||
|
||||
function _kompass_limit_logins_settings_radio_callback($args)
|
||||
{
|
||||
kompass_print_radio($args['setting']);
|
||||
}
|
||||
function _kompass_limit_logins_settings_checkbox_callback($args) {
|
||||
kompass_print_checkbox($args['setting']);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
add_settings_section(
|
||||
'custom_settings_section',
|
||||
'Optionen',
|
||||
'custom_settings_section_callback',
|
||||
BDP_LV_PLUGIN_SLUG . '-limit-login-attempts'
|
||||
);
|
||||
|
||||
$settings_page = BDP_LV_PLUGIN_SLUG . '-limit-login-attempts';
|
||||
|
||||
|
||||
|
||||
add_settings_field(
|
||||
'kompass_lla_1',
|
||||
'Maximale Wiederholungen',
|
||||
'_kompass_limit_logins_settings_callback',
|
||||
$settings_page,
|
||||
'custom_settings_section',
|
||||
['setting' => 'kompass_limit_login_allowed_retries']);
|
||||
|
||||
add_settings_field(
|
||||
'kompass_lla_2',
|
||||
'Dauer der Sperre (in Minuten)',
|
||||
'_kompass_limit_logins_settings_callback',
|
||||
$settings_page,
|
||||
'custom_settings_section',
|
||||
['setting' => 'kompass_limit_login_lockout_duration', 'unit_division' => 60 ]);
|
||||
|
||||
add_settings_field(
|
||||
'kompass_lla_3',
|
||||
'Maximale Anzahl an Sperrungen',
|
||||
'_kompass_limit_logins_settings_callback',
|
||||
$settings_page,
|
||||
'custom_settings_section',
|
||||
['setting' => 'kompass_limit_login_allowed_lockouts']);
|
||||
|
||||
add_settings_field(
|
||||
'kompass_lla_4',
|
||||
'Langzeitsperre in Stunden',
|
||||
'_kompass_limit_logins_settings_callback',
|
||||
$settings_page,
|
||||
'custom_settings_section',
|
||||
['setting' => 'kompass_limit_login_long_duration', 'unit_division' => 3600]);
|
||||
|
||||
add_settings_field(
|
||||
'kompass_lla_5',
|
||||
'Mininmale Passwort-Stärke:',
|
||||
'_kompass_limit_logins_settings_radio_callback',
|
||||
$settings_page,
|
||||
'custom_settings_section',
|
||||
['setting' => 'kompass_password_minimal_strength']);
|
||||
|
||||
add_settings_field(
|
||||
'kompass_lla_6',
|
||||
'Seite erreichbar über:',
|
||||
'_kompass_limit_logins_settings_radio_callback',
|
||||
$settings_page,
|
||||
'custom_settings_section',
|
||||
['setting' => 'kompass_limit_login_client_type']);
|
||||
|
||||
add_settings_field(
|
||||
'kompass_lla_7',
|
||||
'Cookies verarbeiten',
|
||||
'_kompass_limit_logins_settings_radio_callback',
|
||||
$settings_page,
|
||||
'custom_settings_section',
|
||||
['setting' => 'kompass_limit_login_cookies']);
|
||||
|
||||
add_settings_field(
|
||||
'kompass_lla_8',
|
||||
'Bei Sperrung benachrichtigen',
|
||||
'_kompass_limit_logins_settings_checkbox_callback',
|
||||
$settings_page,
|
||||
'custom_settings_section',
|
||||
['setting' => 'kompass_limit_login_lockout_notify']);
|
||||
|
||||
add_settings_field(
|
||||
'kompass_lla_9',
|
||||
'Fehlversuche bis zur Benachrichtigung',
|
||||
'_kompass_limit_logins_settings_callback',
|
||||
$settings_page,
|
||||
'custom_settings_section',
|
||||
['setting' => 'kompass_limit_login_notify_email_after']);
|
64
modules/LimitLoginAttempts/includes/validators.php
Normal file
64
modules/LimitLoginAttempts/includes/validators.php
Normal file
@ -0,0 +1,64 @@
|
||||
<?php
|
||||
function check_for_integer($input) {
|
||||
if (!is_numeric($input)) {
|
||||
wp_die('Bitte nur Zahlen, Danke!');
|
||||
}
|
||||
return $input;
|
||||
}
|
||||
|
||||
|
||||
function hours_to_seconds_converter($input) {
|
||||
// Hier kannst du die Eingabe validieren, z.B. sicherstellen, dass es sich um eine gültige E-Mail-Adresse handelt.
|
||||
return minutes_to_seconds_converter($input) * 60;
|
||||
}
|
||||
|
||||
function minutes_to_seconds_converter($input) {
|
||||
|
||||
// Hier kannst du die Eingabe validieren, z.B. sicherstellen, dass es sich um eine gültige E-Mail-Adresse handelt.
|
||||
return check_for_integer($input) * 60;
|
||||
}
|
||||
|
||||
function kompass_settings_validators()
|
||||
{
|
||||
$slug = BDP_LV_PLUGIN_SLUG . '-limit-login-attempts';
|
||||
|
||||
register_setting($slug,
|
||||
'kompass_limit_login_allowed_retries',
|
||||
'check_for_integer');
|
||||
|
||||
register_setting($slug,
|
||||
'kompass_limit_login_allowed_lockouts',
|
||||
'check_for_integer');
|
||||
|
||||
register_setting($slug,
|
||||
'kompass_limit_login_lockout_duration',
|
||||
'minutes_to_seconds_converter');
|
||||
|
||||
register_setting($slug,
|
||||
'kompass_limit_login_long_duration',
|
||||
'hours_to_seconds_converter');
|
||||
|
||||
register_setting($slug,
|
||||
'kompass_limit_login_notify_email_after',
|
||||
'check_for_integer');
|
||||
}
|
||||
|
||||
function update_settings($postParams) {
|
||||
$settings = ['kompass_limit_login_lockout_duration',
|
||||
'kompass_limit_login_allowed_retries',
|
||||
'kompass_limit_login_allowed_lockouts',
|
||||
'kompass_password_minimal_strength',
|
||||
'kompass_limit_login_client_type',
|
||||
'kompass_limit_login_long_duration',
|
||||
'kompass_limit_login_lockout_notify',
|
||||
'kompass_limit_login_notify_email_after',
|
||||
'kompass_limit_login_cookies'];
|
||||
|
||||
foreach ($settings as $curSetting) {
|
||||
if (isset($postParams[$curSetting])) {
|
||||
update_option( $curSetting, $postParams[ $curSetting ] );
|
||||
} else {
|
||||
update_option( $curSetting, '');
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user