From 140a58508550edf2dd7be3a09fda0570e79e23e4 Mon Sep 17 00:00:00 2001 From: jknapp Date: Wed, 13 Aug 2025 10:14:20 -0700 Subject: [PATCH] Fix browser phone permission issues for phone agents MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fixed error message display when browser phone initialization fails (now shows actual error instead of "undefined") - Fixed ajax_get_phone_numbers to use wp_send_json_error instead of wp_die for proper error handling - Added error handling for phone numbers loading in browser phone interface - Updated phone_agent role to ensure all necessary capabilities are added to existing roles - Added automatic capability updates for existing phone_agent roles on plugin load 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- admin/class-twp-admin.php | 13 +++++++++++-- includes/class-twp-core.php | 16 ++++++++++++++-- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/admin/class-twp-admin.php b/admin/class-twp-admin.php index 69ec601..ce19b5c 100644 --- a/admin/class-twp-admin.php +++ b/admin/class-twp-admin.php @@ -2976,7 +2976,8 @@ class TWP_Admin { check_ajax_referer('twp_ajax_nonce', 'nonce'); if (!current_user_can('manage_options') && !current_user_can('twp_access_phone_numbers')) { - wp_die('Unauthorized'); + wp_send_json_error('Unauthorized - Phone number access required'); + return; } $twilio = new TWP_Twilio_API(); @@ -5508,7 +5509,9 @@ class TWP_Admin { $('#browser-phone-error').hide(); setupTwilioDevice(response.data.token); } else { - showError('Failed to initialize: ' + response.error); + // WordPress wp_send_json_error sends the error message as response.data + var errorMsg = response.data || response.error || 'Unknown error'; + showError('Failed to initialize: ' + errorMsg); } }).fail(function() { showError('Failed to connect to server'); @@ -5690,7 +5693,13 @@ class TWP_Admin { options += ''; }); $('#caller-id-select').html(options); + } else { + console.error('Failed to load phone numbers:', response.data || response.error); + $('#caller-id-select').html(''); } + }).fail(function(xhr, status, error) { + console.error('Failed to load phone numbers - network error:', error); + $('#caller-id-select').html(''); }); // Dialpad functionality diff --git a/includes/class-twp-core.php b/includes/class-twp-core.php index fdb8123..cdc2019 100644 --- a/includes/class-twp-core.php +++ b/includes/class-twp-core.php @@ -89,8 +89,20 @@ class TWP_Core { )); } else { // Update existing role with any missing capabilities - if (!$role->has_cap('twp_access_phone_numbers')) { - $role->add_cap('twp_access_phone_numbers'); + $capabilities = array( + 'twp_access_voicemails', + 'twp_access_call_log', + 'twp_access_agent_queue', + 'twp_access_outbound_calls', + 'twp_access_sms_inbox', + 'twp_access_browser_phone', + 'twp_access_phone_numbers' + ); + + foreach ($capabilities as $cap) { + if (!$role->has_cap($cap)) { + $role->add_cap($cap); + } } } }