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); + } } } }