Page 1 sur 1

Symfony 4 affecter un rôle à l'utilisateur qui s'inscrit via un formulaire et bouton radio

Posté : 03 mai 2019, 17:24
par Sandy
Bonjour,

Je réalise mon premier projet perso sur Symfony 4.
Je voudrais que lorsque l'utilisateur s'inscrive sur le site via le formulaire d'inscription, il coche une case qui correspond à un type boolean en base de données et que celle-ci détermine son rôle. Je n'ai pas su trouver la réponse à travers mes recherches, c'est ainsi que je fais appel à vos connaissances. Merci d'avance pour vos précieuses réponses.

Re: Symfony 4 affecter un rôle à l'utilisateur qui s'inscrit via un formulaire et bouton radio

Posté : 14 mai 2019, 19:19
par Saian
Salut, si tu veux utiliser le système de sécurité de Symfony il y a des règles à suivre et notamment pour les roles.
La documentation est là :
https://symfony.com/doc/current/security.html

Une case à cocher qui détermine le role c'est un peu flou présenté comme ça. Généralement on stocke le ou les roles dans un tableau qui est sérialisé dans une colonne de type LONGTEXT. Le user provider doit suivre un certains nombre de règles dont celui d'implémenter une méthode getRoles() que tu peux à priori coder comme tu veux du moment qu'elle retourne un tableau de roles. Alors pourquoi pas y tester ce booléen et retourner un tableau contenant le role par défaut (ROLE_USER) ou contenant le role en question ?

Re: Symfony 4 affecter un rôle à l'utilisateur qui s'inscrit via un formulaire et bouton radio

Posté : 14 mai 2019, 22:17
par Sandy
Salut,
Merci pour ta réponse. J'ai progressé depuis mon dernier post et j'ai pu mettre en place les rôles utilisateur. Là je rencontre un autre soucis, je voudrais en fonction du rôle, rediriger l'utilisateur vers sa vue profil dont la route est /artist/{id} depuis ma page d'accueil (home.html.twig). J'ai une relation One to One entre ma table user et ma table artist et je n'arrive pas à récupérer l'id de l'artiste...
L'objectif serait de personnaliser le menu de la homepage et mettre à jour les liens en fonction du rôle. Un extrait du code dans la vue home.html.twig
{% if is_granted('ROLE_ARTIST') %}
<li><a href="{{ path('show_artist', {'id':artist.id}) }}">Profil</li>
<li><a href="{{ path('index_place') }}">Lieux</a></li>
<li>Actualités</li>
{% endif %}
Actuellement j'obtiens l'erreur :
Variable "artist" does not exist.
Aurais-tu une idée ?

Re: Symfony 4 affecter un rôle à l'utilisateur qui s'inscrit via un formulaire et bouton radio

Posté : 15 mai 2019, 12:40
par Saian
Si tu as bien défini la relation User / Artist alors normalement c'est pas très compliqué :
<li><a href="{{ path('show_artist', { id: app.user.artist.id }) }}">Profil</li>
https://symfony.com/doc/current/templat ... iable.html

Pour la redirection après login selon le role, tu peux essayer ça mais je ne sais pas si cela fonctionne encore avec Symfony 4 :
https://gkueny.fr/rediriger-apres-login

Si ce n'est pas possible avec la solution au dessus, il te faudra alors mettre en place ta propre classe d'authentification ou tu devrais pouvoir gérer la redirection dans la méthode onAuthenticationSuccess :
https://symfony.com/doc/current/securit ... ation.html