Aller au menu - Aller au contenu

[Symfony2] Rafraichir les rôles d'un utilisateur

Pour accéder à cette section
Connectez-vous !
connexion_rpx

Offre d'emploi : Développeur Web PHP/Drupal (H/F)

Page 1 
Auteur Message
2 visiteurs sur ce sujet (2 anonymes)
Page 1 
Hors ligne Crazymad # Posté le 08/02/2012 à 20:20:09
Avatar

Études : SUPINFO Île-de-France à Paris

Bonjour,

J'ai un soucis lorsque je mets à jour les rôles d'un utilisateur dans Symfony2. Il est en fait obligé de se déconnecter et de se reconnecter pour pouvoir récupérer ses nouveaux rôles ce qui est un peu embêtant...

J'avais réussi à le faire pour l'utilisateur de la session avec la fonction suivante

Code : PHP
1
2
3
4
5
6
7
<?php 

$user->removeRole('ROLE_MANAGER');
$userManager->updateUser($user);
$this->get('security.context')->getToken()->setAuthenticated(false);
 
?>


Mais forcément pour forcer un utilisateur distant à récupérer ses nouveaux rôles ça ne marche pas. Si vous avez une solution propre ou des pistes pour que ça marche, n'hésitez pas ;)
Édité le 08/02/2012 à 20:24:39 par Crazymad
Publicité # Posté le 08/02/2012 à 20:20:09

Hors ligne anonyme # Posté le 08/02/2012 à 23:48:28

Salut,

La solution que j'utilise actuellement est de générer un nouveau Token et de le mettre dans le security.context et de faire un refresh du user ensuite :

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<?php

// ajouter un role
$user->addRole('ROLE_NEW');

// perisister le user et ses nouveaux roles dans la db

// générer un nouveau token
$token = new \Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken(
  $user,
  null,
  'main',
  $user->getRoles()
);
$this->container->get('security.context')->setToken($token);

// faire un refresh du user a l'aide du user manager
$userManager = $this->container->get('fos_user.user_manager');
$userManager->refreshUser($user);
?>
Hors ligne Crazymad # Posté le 09/02/2012 à 04:01:02
Avatar

Études : SUPINFO Île-de-France à Paris

Merci de la réponse.

En fait, pour l'utilisateur courant, j'ai déjâ réussi à faire un refresh grâce à la ligne que j'ai posté. Tu devrais la tester ça marche niquel.

Par contre quand je mets les droits à un autre utilisateur, j'aimerai que la prochaine fois qu'il recharge une page il ait ses nouveaux droits. Sans avoir à lui demande de se déconnecter et se reconnecter... (ce qui fait pas vraiment pro ^^)
Hors ligne anonyme # Posté le 09/02/2012 à 06:56:36

Et la solution que je t'ai donné ne fonctionne pas pour ce que tu veux faire ?

$user n'est pas obligatoirement l'utilisateur courant.
Hors ligne Crazymad # Posté le 10/02/2012 à 01:00:50
Avatar

Études : SUPINFO Île-de-France à Paris

Non ça ne fonctionne pas j'avais déjâ essayé, je viens de retester mais non. L'autre utilisateur doit toujours se déconnecter et se reconnecter pour récupérer ses rôles.
Hors ligne sam59470 # Posté le 12/04/2012 à 11:47:55

Études : Université de Lille 1 - Sciences et Technologies

up. j'ai le même problème.

Tu as trouvé une solution ?

Retour au forum "PHP" ou à la liste des forums

Pour accéder à cette section
Connectez-vous !
connexion_rpx


Lire aussi