Bonjour,

Voilà, je rencontre un petit problème avec l'idée de faire un vrai système d'authentication. Plus j'avance et je réfléchis, plus je me perds dans ce que je veux vraiment faire. Je vous explique rapidement mon souci. Aujourd'hui, j'utilise complètement le Fos User Bunder (qui fait parfaitement le travail), j'ai une entité User, qui permet de se connecter à mon site. Plusieurs rôles sont disponibles pour savoir quelles actions sont attribuées à tel user. Bref, un système basique.

Aujourd'hui, un User a la possibilité d'inviter des personnes qui pourront visualisés une page spécifique protégée par un mot de passe unique, généré automatiquement et stocké dans mon entité Guest. Le tout, sans être connecté (voilà le gros du souci). Cette page protégée est justement protégée avec le component security qui demande a être au moins un user avec le rôle ROLE_USER.

J'espère être assez clair. Quel est pour vous la meilleure solution pour faire ça sans "bricoler" ?
Merci par avance.

5 réponses


betaWeb
Réponse acceptée

Salut,

Ne peux-tu pas créer un faut profil temporaire ayant le ROLE_USER justement ?

Veridis
Réponse acceptée

Hello,

Pourquoi ne pas créé un nouveau rôle : ROLE_GUEST ?

Tu peux imaginer la hierarchie suivante :

# app/config/security.yml
security:
    role_hierarchy:
        ROLE_USER: ROLE_GUEST
        ROLE_ADMIN: ROLE_USER

Ensuite tu autorises les routes guest pour le role ROLE_GUEST (donc pour ROLE_USER et ROLE_ADMIN également), mais pas pour IS_AUTHENTICATED_ANONYMOUSLY

L'idée est ensuite d'attribuer le ROLE_GUEST aux personnes ayant reçu un code d'accès.

Elyanor
Auteur

Hello,

Yep, c'est ce que je me suis dit et je suis partit dessus. Mais l'idée est que cet utilisateur temporaire se transforme en utilisateur réel potentiel.
Ça ne me plaît pas de le logguer pour ensuite qu'il se déconnecte pour s'inscrire. Enfin je ne vois pas trop la logique. Peux-tu m'aiguiller un peu plus ?

Salut

Peut-être aller voir du coté du multi-firewall avec des domains précis (via le pattern) ?

Elyanor
Auteur

Merci pour vos orientations !

@betaweb, @Veridis, je pars sur ce que vous me conseillez. Je n'aime pas trop l'idée d'avoir une entité User qui étends les autres. Mais ça me semble en effet être la manière la plus simple.
Merci encore !