Bonjour,
je suis en train de créer un blog avec symfony et je rencontre un petit soucis au niveau des droits admin. A la base chaque personne qui crée leur compte ont un rôle user obligatoire. Sauf que je peux quand même me connecter avec cet user dans mon espace admin... ce qui devrait normalement ne pas être possible.
Dans mon phpmyadmin les rôles sont bien défini (voir photo), dans services.yaml je n'autorise que l'admin. je ne vois pas trop d'où ça peut venir...
security.yaml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 access_control: # require ROLE_ADMIN for /admin* - { path: '^/admin', roles: ROLE_ADMIN }
Entité User :
Je vous montre au cas où le process pour enregistrer un user :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 /** * @ORM\Column(type="json") */ private $roles = []; /** * @see UserInterface */ public function getRoles(): array { $roles = $this->roles; // guarantee every user at least has ROLE_USER $roles[] = 'ROLE_USER'; $roles[] = 'ROLE_ADMIN'; return array_unique($roles); } public function setRoles(array $roles): self { $this->roles = $roles; return $this; }
Merci pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 /** * register * @Route("/registration", name="registration") * @param mixed $request * @param mixed $entityManager * @param mixed $passwordEncoder * @return Response */ public function register(Request $request, EntityManagerInterface $entityManager, UserPasswordEncoderInterface $passwordEncoder): Response { //On construit le formulaire $user = new User(); $form = $this->createForm(UserType::class, $user); //Gérer la soumision du formulaire (ne se passera que avec la méthode POST) $form->handleRequest($request); if($form->isSubmitted() && $form->isValid()) { //On encode le mot de passe $password = $passwordEncoder->encodePassword($user, $user->getPassword()); $user->setPassword($password); //On donne un rôle user $user->setRoles(['user']); //Sauvegarder l'utilisateur $entityManager = $this->getDoctrine()->getManager(); $entityManager->persist($user); $entityManager->flush(); return $this->redirectToRoute('posts'); } return new Response($this->twig->render('pages/registration.html.twig', [ 'form' => $form->createView() ])); }
Partager