Post

Symfony – Restriction d'accès

Symfony – Restriction d'accès

Cours 28 — Restriction d’accès

Introduction

Symfony permet de limiter l’accès à certaines pages.

La restriction peut être basée sur les rôles de l’utilisateur.


Restriction avec IsGranted

1
#[IsGranted('ROLE_USER')]

Seuls les utilisateurs possédant ce rôle peuvent accéder à la page.


Exemple

1
2
3
4
5
6
#[Route('/sejour')]
#[IsGranted('ROLE_USER')]
public function index(): Response
{
    return new Response('Accès autorisé');
}

Restriction pour un administrateur

1
#[IsGranted('ROLE_ADMIN')]

Seuls les administrateurs peuvent accéder à la page.


Vérification dans le contrôleur

1
2
3
if (!$this->isGranted('ROLE_ADMIN')) {
    throw $this->createAccessDeniedException();
}

Erreur d’accès

1
throw $this->createAccessDeniedException();

Résultat :

1
Erreur 403 - Accès interdit

Utiliser getUser()

1
$user = $this->getUser();

Permet de récupérer l’utilisateur connecté.


Exemple réel

1
2
3
4
5
6
7
8
9
10
#[Route('/profil')]
#[IsGranted('ROLE_USER')]
public function profil(): Response
{
    $user = $this->getUser();

    return new Response(
        $user->getEmail()
    );
}

Comprendre le processus

1
2
3
4
5
6
7
8
9
Utilisateur
↓
Connexion
↓
Rôle
↓
Contrôle d'accès
↓
Page autorisée ou refusée

Conclusion

La restriction d’accès permet de protéger les pages sensibles.

À retenir :

1
2
3
4
5
#[IsGranted(...)]

isGranted()

createAccessDeniedException()
This post is licensed under CC BY 4.0 by the author.