62 lines
2.1 KiB
PHP
62 lines
2.1 KiB
PHP
<?php
|
||
/**
|
||
* WP Multi – Modul: Login deaktivieren (pro Benutzer)
|
||
*
|
||
* Automatisch aus wp-multi.php ausgelagert. Wird über den Loader in
|
||
* wp-multi.php eingebunden (nur wenn das WP Multi Toolkit aktiv ist).
|
||
*/
|
||
|
||
if (!defined('ABSPATH')) { exit; }
|
||
|
||
/*
|
||
* Login deaktivieren
|
||
*/
|
||
|
||
|
||
// Checkbox zum Benutzerprofil hinzufügen
|
||
function wp_multi_add_disable_login_checkbox($user) {
|
||
?>
|
||
<h3>Login deaktivieren</h3>
|
||
<table class="form-table">
|
||
<tr>
|
||
<th><label for="disable_login">Login deaktivieren</label></th>
|
||
<td>
|
||
<input type="checkbox" name="disable_login" id="disable_login" value="1" <?php checked( get_user_meta($user->ID, 'disable_login', true), 1 ); ?> />
|
||
<span class="description">Markiere diese Option, um den Login des Benutzers zu deaktivieren.</span>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<?php
|
||
}
|
||
|
||
// Speichern der Checkbox-Option
|
||
function wp_multi_save_disable_login_checkbox($user_id) {
|
||
if ( isset( $_POST['disable_login'] ) ) {
|
||
update_user_meta( $user_id, 'disable_login', 1 );
|
||
} else {
|
||
delete_user_meta( $user_id, 'disable_login' );
|
||
}
|
||
}
|
||
|
||
// Die Checkbox in das Benutzerprofil einfügen
|
||
add_action( 'show_user_profile', 'wp_multi_add_disable_login_checkbox' );
|
||
add_action( 'edit_user_profile', 'wp_multi_add_disable_login_checkbox' );
|
||
|
||
// Speichern der Checkbox-Option
|
||
add_action( 'personal_options_update', 'wp_multi_save_disable_login_checkbox' );
|
||
add_action( 'edit_user_profile_update', 'wp_multi_save_disable_login_checkbox' );
|
||
|
||
// Login blockieren, wenn die Checkbox aktiviert ist
|
||
function wp_multi_block_login_if_disabled($user_login, $user) {
|
||
// Prüfen, ob der Benutzer das Flag "Login deaktivieren" gesetzt hat
|
||
if ( get_user_meta( $user->ID, 'disable_login', true ) ) {
|
||
// Fehlermeldung anzeigen, wenn der Login deaktiviert ist
|
||
wp_die( 'Dein Login wurde deaktiviert. Bitte kontaktiere den Administrator.' );
|
||
}
|
||
}
|
||
|
||
// Der Filter wird bei jedem Login-Versuch angewendet
|
||
add_action( 'wp_login', 'wp_multi_block_login_if_disabled', 10, 2 );
|
||
|
||
|