diff --git a/wordpress-dev/.gitignore b/wordpress-dev/.gitignore index 78080b84..f3cc064a 100644 --- a/wordpress-dev/.gitignore +++ b/wordpress-dev/.gitignore @@ -52,6 +52,9 @@ Thumbs.db .env.local .env.* +# Google Sheets API credentials (contains sensitive OAuth secrets) +/wordpress/wp-content/plugins/hvac-community-events/includes/google-sheets/google-sheets-config.php + # Logs *.log logs/ diff --git a/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/class-hvac-community-events.php b/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/class-hvac-community-events.php index 807672cb..35a3154f 100644 --- a/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/class-hvac-community-events.php +++ b/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/class-hvac-community-events.php @@ -793,6 +793,13 @@ class HVAC_Community_Events { * Initialize Google Sheets integration */ private function init_google_sheets() { + // Always initialize auth handler for OAuth callbacks + if (file_exists(HVAC_CE_PLUGIN_DIR . 'includes/google-sheets/class-google-sheets-auth.php')) { + require_once HVAC_CE_PLUGIN_DIR . 'includes/google-sheets/class-google-sheets-auth.php'; + new HVAC_Google_Sheets_Auth(); + } + + // Initialize admin interface if (file_exists(HVAC_CE_PLUGIN_DIR . 'includes/google-sheets/class-google-sheets-admin.php')) { require_once HVAC_CE_PLUGIN_DIR . 'includes/google-sheets/class-google-sheets-admin.php'; new HVAC_Google_Sheets_Admin(); diff --git a/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/google-sheets/class-google-sheets-admin.php b/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/google-sheets/class-google-sheets-admin.php index bfdd1f6b..126ba89b 100644 --- a/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/google-sheets/class-google-sheets-admin.php +++ b/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/google-sheets/class-google-sheets-admin.php @@ -49,6 +49,21 @@ class HVAC_Google_Sheets_Admin { + + +
+ + Success! Google Sheets authorization completed successfully! You can now create reports. +
+ + + +
+ + Error: +
+ +
diff --git a/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/google-sheets/class-google-sheets-auth.php b/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/google-sheets/class-google-sheets-auth.php index f31c12d7..669aa5bc 100644 --- a/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/google-sheets/class-google-sheets-auth.php +++ b/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/google-sheets/class-google-sheets-auth.php @@ -44,6 +44,9 @@ class HVAC_Google_Sheets_Auth { // Load stored access token from WordPress options $this->load_access_token(); + + // Register callback handler + add_action('init', array($this, 'handle_oauth_callback')); } /** @@ -337,4 +340,39 @@ class HVAC_Google_Sheets_Auth { 'folder_id' => $this->folder_id ); } + + /** + * Handle OAuth callback from Google + */ + public function handle_oauth_callback() { + // Check if this is an OAuth callback request to the Google Sheets page + if (isset($_GET['code']) && isset($_GET['scope']) && + (strpos($_SERVER['REQUEST_URI'], '/google-sheets/') !== false || + strpos($_SERVER['REQUEST_URI'], 'google-sheets') !== false)) { + + $auth_code = sanitize_text_field($_GET['code']); + + if (class_exists('HVAC_Logger')) { + HVAC_Logger::info("Processing OAuth callback with code: " . substr($auth_code, 0, 20) . "...", 'GoogleSheets'); + } + + // Exchange the authorization code for tokens + $success = $this->exchange_code_for_tokens($auth_code); + + if ($success) { + // Redirect to Google Sheets admin page with success message (clean URL) + wp_redirect(add_query_arg(array( + 'auth_success' => '1' + ), home_url('/google-sheets/'))); + exit; + } else { + // Redirect to Google Sheets admin page with error message + wp_redirect(add_query_arg(array( + 'auth_error' => '1', + 'message' => urlencode($this->get_last_error()) + ), home_url('/google-sheets/'))); + exit; + } + } + } } \ No newline at end of file diff --git a/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/templates/template-google-sheets.php b/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/templates/template-google-sheets.php index 5dac7fcb..3c99cad9 100644 --- a/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/templates/template-google-sheets.php +++ b/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/templates/template-google-sheets.php @@ -27,6 +27,29 @@ get_header(); ?> padding: 20px; } +/* Alert styles */ +.hvac-alert { + padding: 15px; + margin-bottom: 20px; + border-radius: 6px; + border-left: 4px solid; + display: flex; + align-items: center; + gap: 10px; +} + +.hvac-alert-success { + background-color: #d4edda; + border-left-color: #28a745; + color: #155724; +} + +.hvac-alert-error { + background-color: #f8d7da; + border-left-color: #dc3545; + color: #721c24; +} + .hvac-status-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));