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

Répondre


Cette question est un moyen de lutter contre les publications automatisées indésirables.
Émoticônes
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Accéder à davantage d’émoticônes
  Revue du sujet
 

  Étendre la vue Revue du sujet : Symfony 4 affecter un rôle à l'utilisateur qui s'inscrit via un formulaire et bouton radio

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

par Saian » 15 mai 2019, 12:40

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

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

par Sandy » 14 mai 2019, 22:17

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

par Saian » 14 mai 2019, 19:19

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 ?

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

par Sandy » 03 mai 2019, 17:24

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.