autorisations: seul l'utilisateur ou administrateur accède au profil
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:
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:
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.