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