mcpField
A
api-platform-security

api-platform-security

github.com/dev-toolingsSecurity22780 installsUpdated 3w ago
Repository

About api-platform-security

A Symfony skill for designing API Platform authorization around operations, objects, collections, and fields. It provides a default workflow and guardrails for implementing and testing access controls.

Key features

  1. 01Per-operation security expressions
  2. 02Voters for complex authorization
  3. 03Input-dependent security checks
  4. 04User-scoped collections and fields
  5. 05Authorization test guidance

Use cases

  1. 01Restricting access to API operations
  2. 02Limiting collections to a user's records
  3. 03Hiding fields by role or ownership

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/dev-toolings/superpowers-symfony --skill api-platform-security

After installing, type/api-platform-securityin Claude Code to confirm it loaded.

Bundled filesreference.md

Details

From the project README

Api Platform Security (Symfony)

Use when

  • Restricting who may call each operation of an API Platform resource.
  • Authorization depends on the object (owner) or on the submitted data.
  • Users must see only a subset of a collection.
  • Fields must be hidden depending on role or ownership.

Default workflow

  1. Set security per operation with is_granted(), object, and user, plus a securityMessage.
  2. Move complex rules into voters: is_granted('POST_EDIT', object).
  3. When the rule depends on input, use securityPostDenormalize, or securityPostValidation to run after the Validator.
  4. Scope rows with a QueryCollectionExtensionInterface (and QueryItemExtensionInterface) or a state provider.
  5. Hide fields with serializer groups and a decorated context builder, and guard the firewall with access_control.
  6. Test both the grant and the deny case for every protected operation.

Guardrails

  • Never filter rows with a security expression on a collection: it gates the whole collection, it does not scope it.
  • Order of checks: security, denormalization, securityPostDenormalize, validation, securityPostValidation.
  • previous_object exists only in securityPostDenormalize, and request only at resource level.
  • Deny by default and mark secrets such as password with #[Ignore].
  • getAccessDecision() and the Twig access_decision() helper need Symfony 8.1 or later: verify before using them.

Progressive disclosure

  • Use this file for execution posture and risk controls.
  • Open references when deep implementation details are needed.

Output contract

  • The security expression and message per operation, and the voters involved.
  • How collections and fields are scoped per user.
  • Tests covering allowed, forbidden, and anonymous access.

References

  • reference.md

Comments

Markdown supported