Skip to content

feat(acl): add ACL whitelist management API for contract integration permissions (#966) - #974

Merged
Chucks1093 merged 1 commit into
accesslayerorg:mainfrom
KingDavid9999:fixes-issue-#966
Sep 27, 2026
Merged

Chucks1093 merged 1 commit into
accesslayerorg:mainfrom
KingDavid9999:fixes-issue-#966

Conversation

@KingDavid9999

Copy link
Copy Markdown
Contributor

Expose admin CRUD endpoints for the on-chain ACL controlling which
external contracts may interact with the platform, gated by 2-of-3
admin multisig authorization.

  • GET /admin/acl paginated list of whitelisted contracts
    with their permitted function sets
  • POST /admin/acl add a contract + function list, validated
    (Soroban contract address format, function
    name rules) before submitting on-chain
  • DELETE /admin/acl/:id remove a contract from the whitelist
  • GET /admin/acl/history paginated add/remove event log with
    actor, signers, and timestamp

Mutations reuse the existing 2-of-3 admin multisig pattern from key
deprecation (verifyDeprecationSignatures/parseMultisigAdminWallets):
each add/remove requires Ed25519 signatures from distinct configured
admin wallets over a canonical message scoped to the action, contract
address, and function set, preventing replay across actions.

History is stored in a separate append-only AclEvent table so it
survives whitelist removal.

Adds:

  • prisma/schema/acl.prisma (AclWhitelist, AclEvent models) + migration
  • src/modules/acl/{acl.schemas,acl.service,acl.controllers,acl.routes}.ts
  • src/modules/acl/acl.integration.test.ts

Mounts aclRouter at /admin/acl in admin.routes.ts.
Closes #966

…permissions (accesslayerorg#966)

Expose admin CRUD endpoints for the on-chain ACL controlling which
external contracts may interact with the platform, gated by 2-of-3
admin multisig authorization.

- GET    /admin/acl          paginated list of whitelisted contracts
                              with their permitted function sets
- POST   /admin/acl          add a contract + function list, validated
                              (Soroban contract address format, function
                              name rules) before submitting on-chain
- DELETE /admin/acl/:id      remove a contract from the whitelist
- GET    /admin/acl/history  paginated add/remove event log with
                              actor, signers, and timestamp

Mutations reuse the existing 2-of-3 admin multisig pattern from key
deprecation (verifyDeprecationSignatures/parseMultisigAdminWallets):
each add/remove requires Ed25519 signatures from distinct configured
admin wallets over a canonical message scoped to the action, contract
address, and function set, preventing replay across actions.

History is stored in a separate append-only AclEvent table so it
survives whitelist removal.

Adds:
- prisma/schema/acl.prisma (AclWhitelist, AclEvent models) + migration
- src/modules/acl/{acl.schemas,acl.service,acl.controllers,acl.routes}.ts
- src/modules/acl/acl.integration.test.ts

Mounts aclRouter at /admin/acl in admin.routes.ts.
Closes accesslayerorg#966
@drips-wave

drips-wave Bot commented Sep 26, 2026

Copy link
Copy Markdown

@KingDavid9999 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@Chucks1093
Chucks1093 merged commit b280baa into accesslayerorg:main Sep 27, 2026
1 check passed
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.

Build ACL whitelist management API for contract integration permissions

2 participants