PHP beginner |
|
Hallo allemaal,
Ik gebruik het Symfony2 Framework als basis voor mijn applicatie. Als authorisatie provider gebruik ik FosUserBundle. Deze heb ik geconfigureerd conform het stappenplan in de handleiding.
Ook maak ik gebruik van custom forms.
Wat is nu het probleem? Als gebruiker kun je inloggen, maar je hebt altijd ROLE_USER terwijl je eigenlijk ROLE_ADMIN of ROLE_SUPER_ADMIN hoort te hebben.
Hoe heb ik een user gepromoot? Hiervoor heb ik gebruik gemaakt van een commandline code, deze staat beschreven in de handleiding (zie 4 - promote a user).
root@administrator:/var/www/symfony2# php app/console fos:user:promote Martijn --super
User "Martijn" has been promoted as a super administrator.
root@administrator:/var/www/symfony2# php app/console fos:user:promote Martijn --super User "Martijn" has been promoted as a super administrator.
Deze code werkt. Ik zie de wijziging in mijn database in tabel fos_user kolom roles.
a:1:{i:0;s:16:"ROLE_SUPER_ADMIN";}
a:1:{i:0;s:16:"ROLE_SUPER_ADMIN";}
Wanneer ik dit controleer in mijn applicatie kom ik erachter dat deze gebruiker enkel ROLE_USER heeft.
<?php
var_dump($this->getUser()->getRoles());
?>
Resultaat
array(1) { [0]=> string(9) "ROLE_USER" }
array(1) { [0]=> string (9) "ROLE_USER" }
Ik ben met dit probleem nu al een paar dagen mee bezig. Heeft iemand misschien een oplossing of een richting waar ik de oplossing kan vinden?
Alvast bedankt.
Martijn
--------
Oplossing
Methode van entity user aanpassen in het project van
/**
* @inheritDoc
*/
public function getRoles()
{
return array('ROLE_USER');
}
/** * @inheritDoc */ public function getRoles() { return array('ROLE_USER'); }
naar
/**
* @inheritDoc
*/
public function getRoles()
{
return $this->roles;
}
/** * @inheritDoc */ public function getRoles() { return $this->roles; }
Bedankt brammm @ #symfony IRC channel.
|