upskill-event-manager/wordpress-dev/bin/fix-login-via-php.sh
bengizmo a82616b6f7 Fix dashboard data inconsistency and enhance test suite with WP API
- Fixed dashboard data class to use consistent post_author queries instead of mixed _EventOrganizerID meta queries
- This resolves the issue where dashboard showed 18 events but 0 tickets/revenue
- Added WordPress API credentials to environment (.env)
- Created comprehensive API debugging utilities (wp-api-debug.sh, wp-api-fix.sh, api-only-debug.sh)
- Enhanced test and deployment suite with WordPress REST API capabilities
- Root cause: get_total_tickets_sold() and get_total_revenue() were using _EventOrganizerID while other methods used post_author

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-22 19:24:18 -03:00

240 lines
No EOL
7.9 KiB
Bash
Executable file

#!/bin/bash
# Exit on error
set -e
# Source environment variables
if [ -f ".env" ]; then
source .env
else
echo "Error: .env file not found. Please create it with the required variables."
exit 1
fi
echo "===== Fixing Login Issues via PHP ====="
# Create a PHP script to fix login issues
echo "Creating PHP script to fix login issues..."
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && cat > fix-login-issues.php << 'EOF'
<?php
// Load WordPress
require_once('wp-load.php');
echo "===== Fixing Login Issues =====\n";
// 1. Re-enable login failure handler
echo "1. Re-enabling login failure handler...\n";
$login_handler_path = WP_CONTENT_DIR . '/plugins/hvac-community-events/includes/community/class-login-handler.php';
if (file_exists($login_handler_path)) {
$content = file_get_contents($login_handler_path);
if (strpos($content, '// add_action(\'wp_login_failed\'') !== false) {
$fixed_content = str_replace(
'// add_action(\'wp_login_failed\', array($this, \'handle_login_failure\'));',
'add_action(\'wp_login_failed\', array($this, \'handle_login_failure\'));',
$content
);
if (file_put_contents($login_handler_path, $fixed_content)) {
echo "✓ Login failure handler re-enabled\n";
} else {
echo "✗ Failed to update login handler file\n";
}
} else {
echo "✓ Login failure handler already enabled\n";
}
} else {
echo "✗ Login handler file not found\n";
}
// 2. Create mu-plugin to disable caching
echo "2. Creating mu-plugin to disable caching...\n";
$mu_plugin_dir = WP_CONTENT_DIR . '/mu-plugins';
if (!is_dir($mu_plugin_dir)) {
mkdir($mu_plugin_dir, 0755);
}
$nocache_plugin_path = $mu_plugin_dir . '/hvac-nocache.php';
$nocache_plugin_content = <<<'EOT'
<?php
/**
* Plugin Name: HVAC No-Cache for Login
* Description: Prevents caching on login and dashboard pages
* Version: 1.0
*/
function hvac_disable_cache() {
// Check if we're on a login-related page
$uri = $_SERVER['REQUEST_URI'];
$disable_cache = false;
// Pages that should never be cached
$no_cache_pages = array(
'community-login',
'wp-login.php',
'hvac-dashboard',
'certificate-reports',
'generate-certificates',
'event-summary'
);
foreach ($no_cache_pages as $page) {
if (strpos($uri, $page) !== false) {
$disable_cache = true;
break;
}
}
// Also disable cache for logged-in users or authentication attempts
if (is_user_logged_in() || isset($_POST['log']) || isset($_GET['login'])) {
$disable_cache = true;
}
if ($disable_cache) {
// Define WordPress constant
if (!defined('DONOTCACHEPAGE')) {
define('DONOTCACHEPAGE', true);
}
// Set no-cache headers
header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
header('Pragma: no-cache');
}
}
add_action('init', 'hvac_disable_cache', 0);
// Disable Breeze caching for logged-in users
function hvac_disable_breeze_cache() {
if (is_user_logged_in()) {
add_filter('breeze_skip_cache', '__return_true');
}
}
add_action('init', 'hvac_disable_breeze_cache');
EOT;
if (file_put_contents($nocache_plugin_path, $nocache_plugin_content)) {
echo "✓ No-cache plugin created successfully\n";
} else {
echo "✗ Failed to create no-cache plugin\n";
}
// 3. Fix test_trainer user
echo "3. Verifying test_trainer user...\n";
$user = get_user_by('login', 'test_trainer');
if ($user) {
// Reset password just to be sure
wp_set_password('test_password', $user->ID);
echo "✓ Password reset for test_trainer\n";
// Clear user sessions
$sessions = WP_Session_Tokens::get_instance($user->ID);
$sessions->destroy_all();
echo "✓ All sessions cleared for test_trainer\n";
// Verify role
$user_meta = get_userdata($user->ID);
if (!in_array('hvac_trainer', $user_meta->roles)) {
$user->add_role('hvac_trainer');
echo "✓ Added hvac_trainer role\n";
} else {
echo "✓ User already has hvac_trainer role\n";
}
// Make sure user has the right capabilities
if (!user_can($user->ID, 'view_hvac_dashboard')) {
$role = get_role('hvac_trainer');
if ($role) {
$role->add_cap('view_hvac_dashboard', true);
echo "✓ Added view_hvac_dashboard capability to hvac_trainer role\n";
}
} else {
echo "✓ User already has view_hvac_dashboard capability\n";
}
} else {
echo "✗ test_trainer user not found\n";
}
// 4. Clear Breeze cache
echo "4. Clearing Breeze cache...\n";
if (function_exists('breeze_cache_flush')) {
breeze_cache_flush();
echo "✓ Cache cleared via function\n";
} else {
// Try manually clearing cache directories
$cache_dirs = array(
WP_CONTENT_DIR . '/cache/breeze',
WP_CONTENT_DIR . '/uploads/breeze/css',
WP_CONTENT_DIR . '/uploads/breeze/js'
);
foreach ($cache_dirs as $dir) {
if (is_dir($dir)) {
$files = glob($dir . '/*');
foreach ($files as $file) {
if (is_file($file)) {
unlink($file);
}
}
echo "✓ Cleared cache directory: $dir\n";
}
}
}
// 5. Check Breeze settings
echo "5. Checking Breeze settings...\n";
$breeze_basic = get_option('breeze_basic_settings');
if ($breeze_basic && is_array($breeze_basic)) {
// Make sure cache is disabled for logged-in users
$breeze_advanced = get_option('breeze_advanced_settings');
if ($breeze_advanced && is_array($breeze_advanced)) {
if (!isset($breeze_advanced['breeze-disable-admin']) || $breeze_advanced['breeze-disable-admin'] != '1') {
$breeze_advanced['breeze-disable-admin'] = '1';
update_option('breeze_advanced_settings', $breeze_advanced);
echo "✓ Updated Breeze to disable cache for logged-in users\n";
} else {
echo "✓ Breeze already disables cache for logged-in users\n";
}
}
// Add login pages to no-cache list
$no_cache_pages = isset($breeze_basic['no-cache-pages']) ? $breeze_basic['no-cache-pages'] : '';
$pages_to_add = array('/community-login/', '/wp-login.php', '/hvac-dashboard/');
$updated = false;
foreach ($pages_to_add as $page) {
if (strpos($no_cache_pages, $page) === false) {
$no_cache_pages .= (!empty($no_cache_pages) ? ', ' : '') . $page;
$updated = true;
}
}
if ($updated) {
$breeze_basic['no-cache-pages'] = $no_cache_pages;
update_option('breeze_basic_settings', $breeze_basic);
echo "✓ Added login pages to Breeze no-cache list\n";
} else {
echo "✓ Login pages already in Breeze no-cache list\n";
}
} else {
echo "✗ Breeze settings not found\n";
}
echo "\n===== Login Issues Fixed =====\n";
echo "You should now be able to log in with test_trainer / test_password\n";
// Return login URLs for testing
$login_url = site_url('/community-login/');
$dashboard_url = site_url('/hvac-dashboard/');
echo "\nTest URLs:\n";
echo "Login: $login_url\n";
echo "Dashboard: $dashboard_url\n";
EOF"
# Execute the PHP script
echo "Executing login fix script..."
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && php fix-login-issues.php"
# Clean up
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && rm fix-login-issues.php"
echo -e "\n===== Login Fixes Applied ====="
echo "The login issues for the test_trainer user should now be resolved."
echo "Please try logging in with username 'test_trainer' and password 'test_password'."