Skip to content

feat: add datamachine_can_access_agent filter#990

Closed
chubes4 wants to merge 1 commit intomainfrom
feat/can-access-agent-filter
Closed

feat: add datamachine_can_access_agent filter#990
chubes4 wants to merge 1 commit intomainfrom
feat/can-access-agent-filter

Conversation

@chubes4
Copy link
Copy Markdown
Member

@chubes4 chubes4 commented Mar 29, 2026

Summary

Adds a datamachine_can_access_agent filter to PermissionHelper::can_access_agent(), allowing plugins to grant or deny agent access based on custom logic (e.g. team membership, organization roles, subscription status).

What changed

  • inc/Abilities/PermissionHelper.phpcan_access_agent() now applies datamachine_can_access_agent filter after the default access check (admin/owner/explicit grants)

Filter signature

apply_filters( 'datamachine_can_access_agent', bool $can_access, int $agent_id, int $user_id, string $minimum_role )

Consumers can return true to grant access or false to deny, overriding the default.

Why

The frontend chat widget (data-machine-frontend-chat) uses can_access_agent() to determine widget visibility. EC has a custom team membership system (ec_is_team_member()) that needs to grant access to the roadie agent. Without this filter, there's no way for external plugins to extend agent access without directly inserting rows into agent_access.

Testing

  • Existing tests should pass — the filter only adds a apply_filters call, defaulting to the existing $can_access value
  • No behavior change without a consumer hooking the filter

Allows plugins to grant or deny agent access based on custom logic
(e.g. team membership, organization roles, subscription status).

Filter receives: $can_access, $agent_id, $user_id, $minimum_role.
Return true to grant access, false to deny.
@homeboy-ci
Copy link
Copy Markdown
Contributor

homeboy-ci bot commented Mar 29, 2026

Homeboy Results — data-machine

Homeboy

Failure Digest

Lint Failure Digest

Test Failure Digest

Audit Failure Digest

Autofixability classification

  • Overall: auto_fixable
  • Autofix enabled: yes
  • Autofix attempted this run: no
  • Auto-fixable failed commands:
    • lint
  • Failed commands with available automated fixes:
    • lint

Machine-readable artifacts

  • {command}.json — structured output per command (from homeboy --output)

⚡ Scope: changed files only

audit (changed files only)

  • Alignment score: 0.769
  • Outliers in current run: 50
  • Drift increased: no
  • Severity counts: info: 2, unknown: 50, warning: 12
  • Top actionable findings:
    1. inc/Abilities/PermissionHelper.php — naming_mismatch — Helper-like name does not match convention suffix 'Abilities': PermissionHelper
    2. inc/Abilities/PermissionHelper.php — missing_import — Missing import: DataMachine\Abilities\PermissionHelper
    3. inc/Abilities/PermissionHelper.php — missing_test_method — Method 'acting_user_id' has no corresponding test in 'tests/Unit/Abilities/PermissionHelperTest.php'
    4. inc/Abilities/PermissionHelper.php — missing_test_method — Method 'can' has no corresponding test in 'tests/Unit/Abilities/PermissionHelperTest.php'
    5. inc/Abilities/PermissionHelper.php — missing_test_method — Method 'can_access_agent' has no corresponding test in 'tests/Unit/Abilities/PermissionHelperTest.php'
    6. inc/Abilities/PermissionHelper.php — missing_test_method — Method 'can_manage' has no corresponding test in 'tests/Unit/Abilities/PermissionHelperTest.php'
    7. inc/Abilities/PermissionHelper.php — missing_test_method — Method 'clear_agent_context' has no corresponding test in 'tests/Unit/Abilities/PermissionHelperTest.php'
    8. inc/Abilities/PermissionHelper.php — missing_test_method — Method 'in_agent_context' has no corresponding test in 'tests/Unit/Abilities/PermissionHelperTest.php'
    9. inc/Abilities/PermissionHelper.php — missing_test_method — Method 'owns_agent_resource' has no corresponding test in 'tests/Unit/Abilities/PermissionHelperTest.php'
    10. inc/Abilities/PermissionHelper.php — missing_test_method — Method 'owns_resource' has no corresponding test in 'tests/Unit/Abilities/PermissionHelperTest.php'
Audit findings (10 shown)
1. **inc/Abilities/PermissionHelper.php** — naming_mismatch — Helper-like name does not match convention suffix 'Abilities': PermissionHelper
2. **inc/Abilities/PermissionHelper.php** — missing_import — Missing import: DataMachine\Abilities\PermissionHelper
3. **inc/Abilities/PermissionHelper.php** — missing_test_method — Method 'acting_user_id' has no corresponding test in 'tests/Unit/Abilities/PermissionHelperTest.php'
4. **inc/Abilities/PermissionHelper.php** — missing_test_method — Method 'can' has no corresponding test in 'tests/Unit/Abilities/PermissionHelperTest.php'
5. **inc/Abilities/PermissionHelper.php** — missing_test_method — Method 'can_access_agent' has no corresponding test in 'tests/Unit/Abilities/PermissionHelperTest.php'
6. **inc/Abilities/PermissionHelper.php** — missing_test_method — Method 'can_manage' has no corresponding test in 'tests/Unit/Abilities/PermissionHelperTest.php'
7. **inc/Abilities/PermissionHelper.php** — missing_test_method — Method 'clear_agent_context' has no corresponding test in 'tests/Unit/Abilities/PermissionHelperTest.php'
8. **inc/Abilities/PermissionHelper.php** — missing_test_method — Method 'in_agent_context' has no corresponding test in 'tests/Unit/Abilities/PermissionHelperTest.php'
9. **inc/Abilities/PermissionHelper.php** — missing_test_method — Method 'owns_agent_resource' has no corresponding test in 'tests/Unit/Abilities/PermissionHelperTest.php'
10. **inc/Abilities/PermissionHelper.php** — missing_test_method — Method 'owns_resource' has no corresponding test in 'tests/Unit/Abilities/PermissionHelperTest.php'

lint (changed files only)

test (changed files only)

  • Failed tests: 0
Tooling versions
  • Homeboy CLI: homeboy 0.87.0+70358893
  • Extension: wordpress from https://github.com/Extra-Chill/homeboy-extensions
  • Extension revision: unknown
  • Action: Extra-Chill/homeboy-action@v2

Homeboy Action v1

@chubes4
Copy link
Copy Markdown
Member Author

chubes4 commented Mar 29, 2026

Merged to main — proceeding with release.

@chubes4 chubes4 closed this Mar 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant