From e79412619717dc81f654140378fe68e512948dc9 Mon Sep 17 00:00:00 2001 From: Marcus Quinn Date: Tue, 25 Mar 2025 17:13:53 +0000 Subject: [PATCH] fix: Access control settings improvements - Revert role checkboxes layout to previous styling - Fix settings saving functionality with proper result checking - Update error message to 'Error Saving' - Only load functionality when settings are enabled - Use empty arrays as defaults for role settings --- admin/css/wp-allstars-admin.css | 7 ------- admin/includes/class-access-manager.php | 21 +++++++++++++++------ 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/admin/css/wp-allstars-admin.css b/admin/css/wp-allstars-admin.css index 18a3907..614098d 100644 --- a/admin/css/wp-allstars-admin.css +++ b/admin/css/wp-allstars-admin.css @@ -814,13 +814,6 @@ input:checked + .wp-toggle-slider:before { .wp-allstars-role-checkbox span { font-size: 12px; } - - /* Adjust label padding on mobile */ - .wp-setting-left label, - .wp-allstars-toggle-left label, - .wp-allstars-setting-row label { - padding-right: 70px; - } } @keyframes fadeIn { diff --git a/admin/includes/class-access-manager.php b/admin/includes/class-access-manager.php index 98bf2e1..a2486d5 100644 --- a/admin/includes/class-access-manager.php +++ b/admin/includes/class-access-manager.php @@ -183,18 +183,18 @@ class WP_Allstars_Access_Manager { // Handle different setting types switch ($setting) { case 'wp_allstars_hide_admin_bar': - update_option('wp_allstars_hide_admin_bar_roles', $value ? array('guest', 'subscriber', 'customer') : array()); + $result = update_option('wp_allstars_hide_admin_bar_roles', $value ? array('guest', 'subscriber', 'customer') : array()); break; case 'wp_allstars_restrict_dashboard': - update_option('wp_allstars_restrict_dashboard_roles', $value ? array('guest', 'subscriber', 'customer') : array()); + $result = update_option('wp_allstars_restrict_dashboard_roles', $value ? array('guest', 'subscriber', 'customer') : array()); break; case 'wp_allstars_hide_admin_bar_roles': case 'wp_allstars_restrict_dashboard_roles': if (is_array($value)) { $value = array_map('sanitize_text_field', $value); - update_option($setting, $value); + $result = update_option($setting, $value); } break; @@ -202,13 +202,22 @@ class WP_Allstars_Access_Manager { wp_send_json_error('Invalid setting name'); } - wp_send_json_success(); + if ($result) { + wp_send_json_success(); + } else { + wp_send_json_error('Failed to save setting'); + } } /** * Set up access control hooks */ public static function setup_access_control() { + // Only run if the feature is enabled + if (!get_option('wp_allstars_hide_admin_bar_roles') && !get_option('wp_allstars_restrict_dashboard_roles')) { + return; + } + // Get current user $user = wp_get_current_user(); if (!$user->exists()) { @@ -219,8 +228,8 @@ class WP_Allstars_Access_Manager { $user_roles = $user->roles; // Get restricted roles from settings - $hide_admin_bar_roles = get_option('wp_allstars_hide_admin_bar_roles', array('guest', 'subscriber', 'customer')); - $restrict_dashboard_roles = get_option('wp_allstars_restrict_dashboard_roles', array('guest', 'subscriber', 'customer')); + $hide_admin_bar_roles = get_option('wp_allstars_hide_admin_bar_roles', array()); + $restrict_dashboard_roles = get_option('wp_allstars_restrict_dashboard_roles', array()); // Check if user's role is in restricted roles $should_hide_admin_bar = array_intersect($user_roles, $hide_admin_bar_roles);