feat: Add Admin Bar & Dashboard Control functionality - Add new Access Manager class for handling admin bar and dashboard access control - Implement role-based admin bar visibility control - Implement role-based dashboard access restrictions - Add expandable settings panels for role selection - Add responsive grid layout for role checkboxes - Set Guest, Subscriber, and Customer roles as default restricted roles - Update Settings Manager to display access control settings in advanced tab
This commit is contained in:
@ -1573,4 +1573,54 @@ body.wp-admin .button.pricing-button:hover,
|
||||
flex-direction: column !important;
|
||||
position: relative !important;
|
||||
box-sizing: border-box !important;
|
||||
}
|
||||
|
||||
/* Role Checkboxes */
|
||||
.wp-allstars-role-checkboxes {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
|
||||
gap: 10px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.wp-allstars-role-checkbox {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
padding: 8px;
|
||||
background: #f8f9fa;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.wp-allstars-role-checkbox:hover {
|
||||
background: #f0f0f1;
|
||||
border-color: #2271b1;
|
||||
}
|
||||
|
||||
.wp-allstars-role-checkbox input[type="checkbox"] {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.wp-allstars-role-checkbox span {
|
||||
font-size: 13px;
|
||||
color: #50575e;
|
||||
}
|
||||
|
||||
/* Responsive adjustments for role checkboxes */
|
||||
@media screen and (max-width: 782px) {
|
||||
.wp-allstars-role-checkboxes {
|
||||
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.wp-allstars-role-checkbox {
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
.wp-allstars-role-checkbox span {
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
190
admin/includes/class-access-manager.php
Normal file
190
admin/includes/class-access-manager.php
Normal file
@ -0,0 +1,190 @@
|
||||
<?php
|
||||
/**
|
||||
* WP ALLSTARS Access Manager
|
||||
*
|
||||
* Handles access control features like admin bar and dashboard access
|
||||
*
|
||||
* @package WP_ALLSTARS
|
||||
* @since 0.2.5
|
||||
*/
|
||||
|
||||
if (!defined('ABSPATH')) {
|
||||
exit; // Exit if accessed directly
|
||||
}
|
||||
|
||||
class WP_Allstars_Access_Manager {
|
||||
|
||||
/**
|
||||
* Initialize the class
|
||||
*/
|
||||
public static function init() {
|
||||
add_action('admin_init', array(__CLASS__, 'register_settings'));
|
||||
add_action('admin_enqueue_scripts', array(__CLASS__, 'enqueue_scripts'));
|
||||
|
||||
// Add hooks for admin bar and dashboard access control
|
||||
add_action('init', array(__CLASS__, 'setup_access_control'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Register settings for access control
|
||||
*/
|
||||
public static function register_settings() {
|
||||
register_setting('wp_allstars_access', 'wp_allstars_hide_admin_bar_roles');
|
||||
register_setting('wp_allstars_access', 'wp_allstars_restrict_dashboard_roles');
|
||||
}
|
||||
|
||||
/**
|
||||
* Enqueue scripts for the access control settings
|
||||
*
|
||||
* @param string $hook Current admin page hook
|
||||
*/
|
||||
public static function enqueue_scripts($hook) {
|
||||
if ('settings_page_wp-allstars' !== $hook) {
|
||||
return;
|
||||
}
|
||||
|
||||
wp_enqueue_style(
|
||||
'wp-allstars-admin',
|
||||
plugins_url('css/wp-allstars-admin.css', dirname(__FILE__)),
|
||||
array(),
|
||||
WP_ALLSTARS_VERSION
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up access control hooks
|
||||
*/
|
||||
public static function setup_access_control() {
|
||||
// Get current user
|
||||
$user = wp_get_current_user();
|
||||
if (!$user->exists()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Get user roles
|
||||
$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'));
|
||||
|
||||
// Check if user's role is in restricted roles
|
||||
$should_hide_admin_bar = array_intersect($user_roles, $hide_admin_bar_roles);
|
||||
$should_restrict_dashboard = array_intersect($user_roles, $restrict_dashboard_roles);
|
||||
|
||||
// Hide admin bar if needed
|
||||
if (!empty($should_hide_admin_bar)) {
|
||||
add_filter('show_admin_bar', '__return_false');
|
||||
}
|
||||
|
||||
// Restrict dashboard access if needed
|
||||
if (!empty($should_restrict_dashboard) && is_admin() && !wp_doing_ajax()) {
|
||||
// Allow access to profile page
|
||||
if (isset($_GET['page']) && $_GET['page'] === 'profile.php') {
|
||||
return;
|
||||
}
|
||||
|
||||
// Redirect to home page
|
||||
wp_redirect(home_url());
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the access control settings in the advanced tab
|
||||
*/
|
||||
public static function display_access_settings() {
|
||||
// Get current 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'));
|
||||
|
||||
// Get all available roles
|
||||
$roles = wp_roles()->get_names();
|
||||
|
||||
?>
|
||||
<!-- Admin Bar Control -->
|
||||
<div class="wp-allstars-toggle">
|
||||
<div class="wp-allstars-toggle-header" aria-expanded="false">
|
||||
<div class="wp-allstars-toggle-main">
|
||||
<div class="wp-allstars-toggle-left">
|
||||
<div class="wp-toggle-switch">
|
||||
<input type="checkbox"
|
||||
id="wp_allstars_hide_admin_bar"
|
||||
name="wp_allstars_hide_admin_bar"
|
||||
value="1"
|
||||
<?php checked(!empty($hide_admin_bar_roles)); ?>
|
||||
/>
|
||||
<span class="wp-toggle-slider"></span>
|
||||
</div>
|
||||
<label for="wp_allstars_hide_admin_bar">
|
||||
<?php esc_html_e('Admin Bar: Remove for these User Roles', 'wp-allstars'); ?>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<p class="wp-setting-description">
|
||||
<?php esc_html_e('Remove the Admin Bar from showing for logged-in Users that have consumer Roles, where Admin is not relevant to.', 'wp-allstars'); ?>
|
||||
</p>
|
||||
</div>
|
||||
<div class="wp-allstars-toggle-settings">
|
||||
<div class="wp-allstars-setting-row">
|
||||
<label><?php esc_html_e('Select User Roles', 'wp-allstars'); ?></label>
|
||||
<div class="wp-allstars-role-checkboxes">
|
||||
<?php foreach ($roles as $role_key => $role_name): ?>
|
||||
<label class="wp-allstars-role-checkbox">
|
||||
<input type="checkbox"
|
||||
name="wp_allstars_hide_admin_bar_roles[]"
|
||||
value="<?php echo esc_attr($role_key); ?>"
|
||||
<?php checked(in_array($role_key, $hide_admin_bar_roles)); ?>
|
||||
/>
|
||||
<?php echo esc_html($role_name); ?>
|
||||
</label>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Dashboard Access Control -->
|
||||
<div class="wp-allstars-toggle">
|
||||
<div class="wp-allstars-toggle-header" aria-expanded="false">
|
||||
<div class="wp-allstars-toggle-main">
|
||||
<div class="wp-allstars-toggle-left">
|
||||
<div class="wp-toggle-switch">
|
||||
<input type="checkbox"
|
||||
id="wp_allstars_restrict_dashboard"
|
||||
name="wp_allstars_restrict_dashboard"
|
||||
value="1"
|
||||
<?php checked(!empty($restrict_dashboard_roles)); ?>
|
||||
/>
|
||||
<span class="wp-toggle-slider"></span>
|
||||
</div>
|
||||
<label for="wp_allstars_restrict_dashboard">
|
||||
<?php esc_html_e('Dashboard: Prevent access for these User Roles', 'wp-allstars'); ?>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<p class="wp-setting-description">
|
||||
<?php esc_html_e('Prevent the Admin Dashboard from being accessed by consumer Roles, where WP Admin is not relevant.', 'wp-allstars'); ?>
|
||||
</p>
|
||||
</div>
|
||||
<div class="wp-allstars-toggle-settings">
|
||||
<div class="wp-allstars-setting-row">
|
||||
<label><?php esc_html_e('Select User Roles', 'wp-allstars'); ?></label>
|
||||
<div class="wp-allstars-role-checkboxes">
|
||||
<?php foreach ($roles as $role_key => $role_name): ?>
|
||||
<label class="wp-allstars-role-checkbox">
|
||||
<input type="checkbox"
|
||||
name="wp_allstars_restrict_dashboard_roles[]"
|
||||
value="<?php echo esc_attr($role_key); ?>"
|
||||
<?php checked(in_array($role_key, $restrict_dashboard_roles)); ?>
|
||||
/>
|
||||
<?php echo esc_html($role_name); ?>
|
||||
</label>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
}
|
@ -107,41 +107,10 @@ class WP_Allstars_Settings_Manager {
|
||||
?>
|
||||
<div class="wp-allstars-settings-section">
|
||||
<div class="wp-allstars-settings-grid">
|
||||
<!-- Example of an expandable panel setting -->
|
||||
<div class="wp-allstars-toggle">
|
||||
<div class="wp-allstars-toggle-header" aria-expanded="false">
|
||||
<div class="wp-allstars-toggle-main">
|
||||
<div class="wp-allstars-toggle-left">
|
||||
<div class="wp-toggle-switch">
|
||||
<input type="checkbox"
|
||||
id="wp_allstars_auto_upload_images"
|
||||
name="wp_allstars_auto_upload_images"
|
||||
value="1"
|
||||
<?php checked(get_option('wp_allstars_auto_upload_images', false)); ?>
|
||||
/>
|
||||
<span class="wp-toggle-slider"></span>
|
||||
</div>
|
||||
<label for="wp_allstars_auto_upload_images">
|
||||
<?php esc_html_e('Example: Expandable Panel', 'wp-allstars'); ?>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<p class="wp-setting-description">
|
||||
<?php esc_html_e('This is an example of an expandable panel setting. Currently for demonstration purposes only - no actual functionality.', 'wp-allstars'); ?>
|
||||
</p>
|
||||
</div>
|
||||
<div class="wp-allstars-toggle-settings">
|
||||
<div class="wp-allstars-setting-row">
|
||||
<label for="example_text"><?php esc_html_e('Example Text Field', 'wp-allstars'); ?></label>
|
||||
<input type="text"
|
||||
id="example_text"
|
||||
name="example_text"
|
||||
value="Example value"
|
||||
/>
|
||||
<p class="description"><?php esc_html_e('This is an example text field for demonstration purposes.', 'wp-allstars'); ?></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
// Display access control settings
|
||||
WP_Allstars_Access_Manager::display_access_settings();
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
|
@ -6,18 +6,31 @@
|
||||
* site performance, improve workflow, and provide recommendations for plugins and hosting.
|
||||
*
|
||||
* @package WP_ALLSTARS
|
||||
* @version v0.2.3
|
||||
* @version v0.2.4
|
||||
*
|
||||
* Plugin Name: WP ALLSTARS Plugin
|
||||
* Plugin URI: https://www.wpallstars.com
|
||||
* Description: WP ALLSTARS Plugin for WordPress. Speed Matters.
|
||||
* Version: v0.2.3 (Beta)
|
||||
* Author: WP ALLSTARS
|
||||
* Author URI: https://www.wpallstars.com
|
||||
* License: GPL-2.0+
|
||||
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
|
||||
* Plugin Name: WP Allstars
|
||||
* Plugin URI: https://wpallstars.com
|
||||
* Description: A superstar stack of premium WordPress functionality, designed for SEO pros.
|
||||
* Author: Marcus Quinn
|
||||
* Author URI: https://wpallstars.com
|
||||
* Text Domain: wp-allstars
|
||||
* Domain Path: /languages
|
||||
* @version v0.2.4
|
||||
*
|
||||
* WP Allstars is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* any later version.
|
||||
* Version: v0.2.4 (Beta)
|
||||
*
|
||||
* WP Allstars is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WP Allstars. If not, see https://www.gnu.org/licenses/gpl-2.0.html.
|
||||
*
|
||||
* Requires at least: 5.0
|
||||
* Requires PHP: 7.2
|
||||
*/
|
||||
@ -61,6 +74,7 @@ if (is_admin()) {
|
||||
require_once plugin_dir_path(__FILE__) . 'admin/includes/class-plugin-manager.php';
|
||||
require_once plugin_dir_path(__FILE__) . 'admin/includes/class-free-plugins-manager.php';
|
||||
require_once plugin_dir_path(__FILE__) . 'admin/includes/class-readme-manager.php';
|
||||
require_once plugin_dir_path(__FILE__) . 'admin/includes/class-access-manager.php';
|
||||
|
||||
// Initialize the admin manager
|
||||
add_action('plugins_loaded', array('WP_Allstars_Admin_Manager', 'init'));
|
||||
@ -92,6 +106,9 @@ add_action('init', 'wp_allstars_init_auto_upload');
|
||||
function wp_allstars_init_features() {
|
||||
// Initialize the Admin Colors feature
|
||||
new WP_Allstars_Admin_Colors();
|
||||
|
||||
// Initialize the Access Manager
|
||||
WP_Allstars_Access_Manager::init();
|
||||
}
|
||||
add_action('plugins_loaded', 'wp_allstars_init_features');
|
||||
|
||||
|
Reference in New Issue
Block a user