REDROOM
PHP 8.2.31
Path:
Logout
Edit File
Size: 3.83 KB
Close
/home/nshryvcy/radiantskinclinics.org/wp-content/plugins/getgenie/app/Services/RoleManager/RoleManager.php
Text
Base64
<?php namespace GenieAi\App\Services\RoleManager; class RoleManager { private $role_management_config = []; private $current_user = null; /** * Initialize RoleManager with config and user loading * * @return void */ public function __construct() { $this->role_management_config = get_option('genie_role_management_config', []); // If config is not set, set default permissions for all roles with publish_posts capability if (empty($this->role_management_config)) { $default_roles = $this->get_roles_with_publish_posts(); $this->role_management_config = [ 'access_seo_insights' => $default_roles, 'access_ai_writing' => $default_roles, 'access_keyword_research' => $default_roles, ]; // Save the default config to WordPress options update_option('genie_role_management_config', $this->role_management_config); } add_action('init', [$this, 'load_current_user']); } /** * Get all roles that have publish_posts capability * * @return array Array of role slugs with publish_posts capability */ private function get_roles_with_publish_posts() { $roles = []; $all_roles = \wp_roles()->get_names(); foreach ($all_roles as $role => $label) { $role_obj = \wp_roles()->get_role($role); if ($role_obj && !empty($role_obj->capabilities['publish_posts'])) { $roles[] = $role; } } return $roles; } /** * Load current user on init hook * * This method is called on the WordPress 'init' hook to load and store the * current logged-in user for role-based permission checks. * * @return void */ public function load_current_user() { $this->current_user = wp_get_current_user(); } /** * Check if current user is allowed to access SEO Insights * * @return bool */ public function is_allow_seo_insights() { if (!$this->current_user->ID) { return false; } if (!isset($this->role_management_config['access_seo_insights'])) { return false; } $allowed_roles = $this->role_management_config['access_seo_insights']; return $this->user_has_role($this->current_user, $allowed_roles); } /** * Check if current user is allowed to access Keyword Research * * @return bool */ public function is_allow_keyword_research() { if (!$this->current_user->ID) { return false; } if (!isset($this->role_management_config['access_keyword_research'])) { return false; } $allowed_roles = $this->role_management_config['access_keyword_research']; return $this->user_has_role($this->current_user, $allowed_roles); } /** * Check if current user is allowed to access AI Writing (Chatbot) * * @return bool */ public function is_allow_ai_writing() { if (!$this->current_user->ID) { return false; } if (!isset($this->role_management_config['access_ai_writing'])) { return false; } $allowed_roles = $this->role_management_config['access_ai_writing']; return $this->user_has_role($this->current_user, $allowed_roles); } /** * Check if user has any of the allowed roles * * @param \WP_User $user * @param array $allowed_roles * @return bool */ private function user_has_role($user, $allowed_roles) { if (empty($allowed_roles)) { return false; } $user_roles = (array) $user->roles; return !empty(array_intersect($user_roles, $allowed_roles)); } }
Save
Close
Exit & Reset
Text mode: syntax highlighting auto-detects file type.
Directory Contents
Dirs: 0 × Files: 1
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
RoleManager.php
3.83 KB
lrw-r--r--
2026-04-19 10:39:50
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).