Bonjour, je me demande si il est possible de bloquer l'envoie de certaines données à une page si l'utilisateur n'a pas le rôle requis.
Dans mon cas j'ai une page "/user" dans laquelle j'autorise uniquement à ceux qui ont le role admin de pouvoir voir des données envoyé en json, je fais donc :

user/index.html.twig :

{% if is_granted('ROLE_ADMIN') %}...{% endif %}

et j'ai essayé d'ajouté aussi dans le controller :

if ($this->security->isGranted('ROLE_ADMIN')) {
            $bookingsData['secret'] = rand();
        }

mais le problème c'est qu'en allant dans inspecter, onglet sources, on peut voir les données en json qui ne sont pas affiché dans la vue.
La solution la plus simple serait de créer une route et un template différent mais ça veut aussi dire ajouter un lien et si j'ai plusieurs page contenant ce lien ça devient vite chiant...

1 réponse


Bonjour,
Difficile de donner une réponse précise sans voir le contrôleur ni les entités, mais sur le principe, tu peux utiliser des groupes de serialization pour renvoyer certains champs en fonction des cas, ainsi ton contrôleur ne renverra que les champs correspondant au groupe souhaité.
Tu trouveras la doc ici :
https://symfony.com/doc/current/serializer.html#using-serialization-groups-annotations