Bonjour,
je suis en train de configurer les autorisations pour mon application et comme écris dans le titre je souhaite:
- qu'un utilisateur puisse accéder à son profil et uniquement au sien.
- qu'un administrateur puisse accéder à tous les profils.
dans mon security.yaml:
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 access_control: - { path: ^/admin, roles: ROLE_ADMIN } - { path: ^/profile, roles: ROLE_COLL } role_hierarchy: ROLE_ADMIN: ROLE_COLL
Un utilisateur enregistré est soit un collaborateur ou un administrateur
et dans mon controller:
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 #[Route('/profile/user/{id}', name: 'app_user_read')] public function read(User $user) { return $this->render('user/read.html.twig', compact('user')); }
La solution à laquelle je pense : comparer l' id appelé avec celui de l'utilisateur connecté: if ( $this->getUser()->getId() == $user->getId() ) {}
et afficher un texte si la condition n'est pas vérifiée. Mais je ne trouve pas ça génial !
J'ai créé un fichier ( surchargé ) la page d'erreur 403 de symfony, je voudrais afficher cette page au cas ou l'utilisateur tente d'accéder à un profil qui n'est pas le sien !
( en cliquant sur un lien ou bien en taper l'url dans la barre de recherche du navigateur ).
Pour l'instant, cette page s'affiche lorsqu'un utilisateur (ROLE_COLL) est connecté et veut accéder à une route réservé à l'administrateur.
Une redirection, ça peut marcher, mais je pense que c'est pas la bonne façon de faire.
Voilà,
Cordialement,
Laurent.
Partager