Closed acicovic closed 1 month ago
[!WARNING]
Rate limit exceeded
@acicovic has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 0 minutes and 13 seconds before requesting another review.
How to resolve this issue?
After the wait time has elapsed, a review can be triggered using the `@coderabbitai review` command as a PR comment. Alternatively, push new commits to this PR. We recommend that you space out your commits to avoid hitting the rate limit.How do rate limits work?
CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our [FAQ](https://coderabbit.ai/docs/faq) for further information.Commits
Files that changed from the base of the PR and between a71f4fd2f8ebed110d177ccf7407a76c42851364 and 59301df8e1d9a4d17c5d72632a62aa692dfd9bc7.
The changes introduce a comprehensive permissions system for Content Helper features, allowing more granular control over user access to features like smart linking and title suggestions. Core modifications include adding permissions checks, importing necessary classes, and updating method implementations across various files. Additionally, new utility functions and definitions for handling permissions in the frontend and backend were added.
Files/Groups | Change Summary |
---|---|
src/@types/assets/window.d.ts | Added global variable wpParselyContentHelperPermissions declaration. |
src/Endpoints/ | Updated to check user permissions before accessing features using Permissions::current_user_can_use_pch_feature . |
src/UI/class-settings-page.php | Changed allowed_user_roles to key-value pairs with strings/booleans. |
src/class-parsely.php | Adjusted properties and methods to handle default values and permissions for roles. |
src/class-permissions.php | Expanded Permissions class to validate user permissions, converting settings to JSON, and generating settings arrays. |
src/content-helper/ | Added and integrated new permissions-related imports, methods, and checks. Specifically added permission handling in common utils, editor-sidebar, excerpt generator, and error handling components. |
tests/Integration/UI/SettingsPageTest.php | Enhanced to use transform_pch_options_for_validation for transforming and validating options. |
sequenceDiagram
participant User as User
participant UI as User Interface (UI)
participant API as API Endpoint
participant Perm as Permissions Class
User ->> UI: Request Access to Feature
UI ->> API: Validate Access (smart linking, title suggestions)
API ->> Perm: Validate Permissions for User
Perm -->> API: Access Allowed / Denied
API -->> UI: Response with Validation Result
UI -->> User: Render Feature Based on Permissions
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
The SonarCloud failure is a code duplication warning, which can be ignored.
Description
With this PR, we're implementing Content Helper AI feature permissions in the back-end and front-end, as the continuation of the work introduced in #2554.
The default settings will be different based on whether the plugin installation is new or existing. For new installations, PCH AI features will be auto-enabled solely for users with the
administrator
User Role. For existing installations, the features will be auto-enabled for all User Roles who have theedit_posts
capability, as done for all plugin versions before 3.16.0. This is done to prevent unexpected behavior changes while upgrading to 3.16.0. In both cases, administrators will be then able to adjust the related settings from the plugin's Settings page, under the Content Helper tab.After the upgrade to 3.16.0, any newly added User Roles will need to be manually allowed access to the PCH AI features. This means that we're switching from an "on by default" to an "off by default" approach.
Motivation and context
Allow website administrator to control which Content Helper AI features are available to users, based on their User Role.
How has this been tested?
Summary by CodeRabbit
New Features
Enhancements
Bug Fixes
Tests