add_cap( Constants::CAP_MANAGE ); $role->add_cap( Constants::CAP_ACKNOWLEDGE ); $role->add_cap( Constants::CAP_VIEW_DIAGNOSTICS ); // Least-privilege subset for Shop Manager per PRD §18.1 (activation grants // capabilities to administrator/shop manager). Only the read/acknowledge // surface is granted — override/recalculate/publish gates stay // administrator-only by design. Order-risk view continues to follow // WooCommerce order access expectations (§18.1). $shop_manager = get_role( 'shop_manager' ); if ( $shop_manager ) { $shop_manager->add_cap( Constants::CAP_MANAGE ); $shop_manager->add_cap( Constants::CAP_ACKNOWLEDGE ); $shop_manager->add_cap( Constants::CAP_VIEW_DIAGNOSTICS ); } } /** * Remove capabilities (uninstall path only; keep on deactivate). * * @return void */ public static function uninstall() { $role = get_role( 'administrator' ); if ( ! $role ) { return; } $role->remove_cap( Constants::CAP_MANAGE ); $role->remove_cap( Constants::CAP_ACKNOWLEDGE ); $role->remove_cap( Constants::CAP_VIEW_DIAGNOSTICS ); $shop_manager = get_role( 'shop_manager' ); if ( $shop_manager ) { $shop_manager->remove_cap( Constants::CAP_MANAGE ); $shop_manager->remove_cap( Constants::CAP_ACKNOWLEDGE ); $shop_manager->remove_cap( Constants::CAP_VIEW_DIAGNOSTICS ); } } /** * Current user can manage MarginBeacon. * * @return bool */ public static function current_user_can_manage() { return current_user_can( Constants::CAP_MANAGE ) || current_user_can( 'manage_woocommerce' ); } }