__('Access Denied Redirect', 'advanced-access-manager'), 'description' => __('Choose how denied access is handled in the frontend and admin area, and set a shared default, message, or PHP callback for REST, Ability, and MCP calls.', 'advanced-access-manager'), 'setting' => AAM::SERVICES[AAM_Service_AccessDeniedRedirect::class] ], [ 'title' => __('Admin Toolbar', 'advanced-access-manager'), 'description' => __('Manage access to the top admin toolbar items for any role or individual user. The service only removes restricted items but does not actually protect from direct access via link.', 'advanced-access-manager'), 'setting' => AAM::SERVICES[AAM_Service_AdminToolbar::class] ], [ 'title' => __('API Routes', 'advanced-access-manager'), 'description' => __('Manage access to any individual RESTful endpoint for any role, user or unauthenticated application request. The service works great with JWT service that authenticate requests with JWT Bearer token.', 'advanced-access-manager'), 'setting' => AAM::SERVICES[AAM_Service_ApiRoute::class] ], [ 'title' => __('Abilities & MCP', 'advanced-access-manager'), 'description' => __('Control WordPress abilities and MCP servers, tools, resources, and prompts for each access level.', 'advanced-access-manager'), 'setting' => AAM::SERVICES[AAM_Service_Ability::class] ], [ 'title' => __('Backend Menu', 'advanced-access-manager'), 'description' => __('Manage access to the admin (backend) main menu for any role or individual user. The service removes restricted menu items and protects direct access to them.', 'advanced-access-manager'), 'setting' => AAM::SERVICES[AAM_Service_BackendMenu::class] ], [ 'title' => __('Capabilities', 'advanced-access-manager'), 'description' => __('Manage list of all the registered with WordPress core capabilities for any role or individual user. The service allows to create new or update and delete existing capabilities. Very powerful set of tools for more advanced user/role access management.', 'advanced-access-manager'), 'setting' => AAM::SERVICES[AAM_Service_Capability::class] ], [ 'title' => __('Hooks', 'advanced-access-manager'), 'description' => __('Take control of your WordPress hooks (actions and filters). Manage their execution and customize return values with precision.', 'advanced-access-manager'), 'setting' => AAM::SERVICES[AAM_Service_Hooks::class] ], [ 'title' => __('Posts & Terms', 'advanced-access-manager'), 'description' => __('Manage access to your website content for any user, role or visitor. This include access to posts, pages, media attachment, custom post types, categories, tags, custom taxonomies and terms.', 'advanced-access-manager'), 'setting' => AAM::SERVICES[AAM_Service_Content::class] ], [ 'title' => __('Identity Governance', 'advanced-access-manager'), 'description' => __('Control how other users and unauthenticated visitors can view and manage the profiles of registered users on the site.', 'advanced-access-manager'), 'setting' => AAM::SERVICES[AAM_Service_Identity::class] ], [ 'title' => __('JWT Tokens', 'advanced-access-manager'), 'description' => __('Manage the website authentication with JWT Bearer token. The service facilitates the ability to manage the list of issued JWT token for any user, revoke them or issue new on demand.', 'advanced-access-manager'), 'setting' => AAM::SERVICES[AAM_Service_Jwt::class] ], [ 'title' => __('Login Redirect', 'advanced-access-manager'), 'description' => __('Handle login redirects for any user group or individual user upon successful authentication.', 'advanced-access-manager'), 'setting' => AAM::SERVICES[AAM_Service_LoginRedirect::class] ], [ 'title' => __('Logout Redirect', 'advanced-access-manager'), 'description' => __('Manage the logout redirect for any group of users or individual users after they have successfully logged out.', 'advanced-access-manager'), 'setting' => AAM::SERVICES[AAM_Service_LogoutRedirect::class] ], [ 'title' => __('Manage Application Passwords', 'advanced-access-manager'), 'description' => __('Control who can use WordPress application passwords and review accounts with application passwords on the Users screen.', 'advanced-access-manager'), 'setting' => AAM::SERVICES[AAM_Service_ApplicationPasswords::class] ], [ 'title' => __('Metaboxes', 'advanced-access-manager'), 'description' => __('Control the visibility of classic backend metaboxes for any role, user, or visitor. This service exclusively hides unwanted metaboxes from the admin screens.', 'advanced-access-manager'), 'setting' => AAM::SERVICES[AAM_Service_Metaboxes::class] ], [ 'title' => __('404 Redirect', 'advanced-access-manager'), 'description' => __('Handle frontend 404 (Not Found) redirects for any group of users or individual user.', 'advanced-access-manager'), 'setting' => AAM::SERVICES[AAM_Service_NotFoundRedirect::class] ], [ 'title' => __('Shortcodes', 'advanced-access-manager'), 'description' => __('Classic WordPress shortcodes that allow to manage access to parts of a frontend content as well as some UI helpers.', 'advanced-access-manager'), 'setting' => AAM::SERVICES[AAM_Service_Shortcodes::class] ], [ 'title' => __('Access Policies', 'advanced-access-manager'), 'description' => __('Control website access using thoroughly documented JSON policies for users, roles, and visitors. Maintain a detailed record of all access changes and policy revisions.', 'advanced-access-manager'), 'setting' => AAM::SERVICES[AAM_Service_Policies::class] ], [ 'title' => __('Secure Login', 'advanced-access-manager'), 'description' => __('Enhance default WordPress authentication process with more secure login mechanism. The service registers frontend AJAX Login widget as well as additional endpoints for the RESTful API authentication.', 'advanced-access-manager'), 'setting' => AAM::SERVICES[AAM_Service_SecureLogin::class] ], [ 'title' => __('Security Scan', 'advanced-access-manager'), 'description' => __('This automated security scan service conducts a series of checks to verify the integrity of your website\'s configurations and detect any potential elevated privileges for users and roles.', 'advanced-access-manager'), 'setting' => AAM::SERVICES[AAM_Service_SecurityAudit::class] ], [ 'title' => __('URL Access', 'advanced-access-manager'), 'description' => __('Manage direct access to website URLs for any role or individual user. Define specific URLs or use wildcards (with the premium add-on). Control user requests by setting rules to allow, deny, or redirect access.', 'advanced-access-manager'), 'setting' => AAM::SERVICES[AAM_Service_Urls::class] ], [ 'title' => __('Welcome', 'advanced-access-manager'), 'description' => __('This service provides a simple overview of the plugin and its capabilities. It presents essential information about how AAM can enhance your experience and streamline your tasks. Explore the features and benefits of AAM and discover how it can help you achieve your goals efficiently.', 'advanced-access-manager'), 'setting' => AAM::SERVICES[AAM_Service_Welcome::class] ], [ 'title' => __('Widgets', 'advanced-access-manager'), 'description' => __('Control the visibility of widgets on the backend and frontend for any role, user, or visitor. This service exclusively hides unwanted widgets.', 'advanced-access-manager'), 'setting' => AAM::SERVICES[AAM_Service_Widgets::class] ] ]); // Abilities were added in WordPress 6.9. if (!function_exists('wp_get_abilities')) { $response = array_values(array_filter($response, function($item) { return $item['setting'] !== AAM::SERVICES[AAM_Service_Ability::class]; })); } // Get each service status foreach ($response as &$item) { if (!array_key_exists('status', $item)) { $item['status'] = AAM::api()->config->get($item['setting'], true); } } return $response; } /** * Register services settings tab * * @return void * @access public * * @version 7.0.0 */ public static function register() { AAM_Backend_Feature::registerFeature((object) array( 'uid' => 'settings-services', 'position' => 1, 'title' => __('Services', 'advanced-access-manager'), 'capability' => self::ACCESS_CAPABILITY, 'type' => 'settings', 'view' => __CLASS__ )); } }