Tengo muchos roles en la aplicación, incl. super_admin, administrador, usuario, moderador, editor... Quiero usar apiPlatform y mostrar los campos apropiados en las entidades de manera adecuada para los roles, también hice clases adicionales que convierten los roles en clases. Todo funciona. Sin embargo, rompe la idea de grupos en el serializador. Por ejemplo: tengo varias entidades que están relacionadas entre sí. Cuando soy administrador y quiero descargar entidades, todas las propiedades con el grupo "admin: leer" se descargarán + todas las propiedades de las clases relacionadas también con el grupo "admin: leer", incluso si no las uso. ¿Está bien? ¿Es una buena idea usar roles en entidades? ¿Hay otra manera mejor?
Ejemplo de https://api-platform.com/docs/core/serialization/
Libro de clase
<?php // api/src/Entity/Book.php namespace App\Entity; use ApiPlatform\Core\Annotation\ApiResource; use Symfony\Component\Serializer\Annotation\Groups; #[ApiResource(normalizationContext: ['groups' => ['book']])] class Book { /** * @Groups({"book"}) */ public $name; /** * @Groups({"book"}) */ public $author; // ... }Persona de clase
<?php // api/src/Entity/Person.php namespace App\Entity; use ApiPlatform\Core\Annotation\ApiResource; use Symfony\Component\Serializer\Annotation\Groups; #[ApiResource] class Person { /** * ... * @Groups("book") */ public $name; // ... }y resultado
{ "@context": "/contexts/Book", "@id": "/books/62", "@type": "Book", "name": "My awesome book", "author": { "@id": "/people/59", "@type": "Person", "name": "Kévin Dunglas" } }Entonces, si en lugar de "libro" escribe "administrador: leer", siempre serializará todo lo que tenga un grupo "administrador: leer". Creo que está obteniendo datos innecesarios. Quiero recalcar que hay muchas entidades, no como en el ejemplo de dos/varias.
Creo que es una buena idea agregar un rol en la serialización, pero cuando agrega un rol en la serialización, debe decorar api_platform.serializer.context_builder. Consulte esta sección https://api-platform.com/docs/core/serialization/# Changing -el-contexto-de-serialización-dinámicamente