function bcsc_login($input, $password) {
    global $wpdb;

    $login_table     = $wpdb->prefix . 'login_users';
    $personnel_table = $wpdb->prefix . 'bcto_personnel';

    $is_email = strpos($input, '@') !== false;

    // ---------------------------------------------------------
    // 1. LOGIN USING EMAIL (PRIMARY)
    // ---------------------------------------------------------
    if ($is_email) {

        // Find personnel by email
        $person = $wpdb->get_row($wpdb->prepare("
            SELECT * FROM $personnel_table WHERE email = %s
        ", $input));

        if (!$person) return false;

        // Find login user by personnel_id
        $user = $wpdb->get_row($wpdb->prepare("
            SELECT * FROM $login_table WHERE personnel_id = %d
        ", $person->id));

        if (!$user) return false;
    }

    // ---------------------------------------------------------
    // 2. LOGIN USING USERNAME (SECONDARY)
    // ---------------------------------------------------------
    else {

        // Find login user by username
        $user = $wpdb->get_row($wpdb->prepare("
            SELECT * FROM $login_table WHERE username = %s
        ", $input));

        if (!$user) return false;

        // Load personnel record
        $person = $wpdb->get_row($wpdb->prepare("
            SELECT * FROM $personnel_table WHERE id = %d
        ", $user->personnel_id));

        if (!$person) return false;
    }

    // ---------------------------------------------------------
    // 3. VERIFY PASSWORD
    // ---------------------------------------------------------
    if (!password_verify($password, $user->password_hash)) {
        return false;
    }

    // ---------------------------------------------------------
    // 4. STORE SESSION
    // ---------------------------------------------------------
    $_SESSION['choir_user'] = [
        'id'           => $user->id,
        'personnel_id' => $person->id,
        'email'        => $person->email,
        'first_name'   => $person->first_name,
        'last_name'    => $person->last_name,
        'voice_part'   => $person->voice_part,
        'choir_group'  => $person->choir_group,
        'role'         => $user->role
    ];

    return true;
}
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="https://mqusmusic.org/wp-sitemap-index.xsl" ?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><sitemap><loc>https://mqusmusic.org/wp-sitemap-posts-page-1.xml</loc></sitemap></sitemapindex>
