<?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 );


