Ändern von Benutzer-Entität, wenn die Anmeldung über FOS-Benutzer-Bundle und Symfony2

Als viele Menschen wissen, die FOS-Benutzer-Bundle bieten nicht die Rollen automatisch, wenn sich ein Benutzer anmeldet. Die häufigste Lösung ist, entweder a) ändern der Entität "Benutzer" - Konstruktor automatisch eine Rolle zuweisen, oder b) überschreiben Sie die gesamte Registrierung-controller.

Keine dieser Lösungen scheint perfekt, und ich will, Gebrauch zu machen von den Ereignissen, die die FOS-Benutzer-bundle bietet.

Ich habe es geschafft, zu erfassen, die Veranstaltung, die ich will (FOSUserEvents::REGISTRATION_INITIALIZE), aber ich habe Schwierigkeiten, herauszufinden, wie übergeben Sie die geänderte Entität "Benutzer" zurück zum Anmeldeformular.

Den code habe ich so weit ist wie folgt:

namespace HCLabs\UserBundle\EventListener;

use FOS\UserBundle\FOSUserEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use FOS\UserBundle\Event\UserEvent;
use FOS\UserBundle\Model\UserInterface;

class AutoRoleAssignmentListener implements EventSubscriberInterface
{
  public static function getSubscribedEvents()
  {
    return [ FOSUserEvents::REGISTRATION_INITIALIZE => 'onRegistrationInitialise' ];
  }

  public function onRegistrationInitialise( UserEvent $event )
  {
    $user = $event->getUser();
    $user->addRole( 'ROLE_USER' );

    //what do
  }
}

Den YML für die Ereignis-listener:

services:
    hc_labs_user.reg_init:
        class: HCLabs\UserBundle\EventListener\AutoRoleAssignmentListener
        tags:
            - { name: kernel.event_subscriber }

Wenn mehr code benötigt wird, bin ich gerne bereit es. Vielen Dank für Ihre Hilfe.

  • möglich, Duplikat der FOSUserBundle: Holen Sie sich EntityManager-Instanz überschreiben Form-Handler
  • nicht ein Duplikat ist, diese Frage ist in Bezug auf die übergeordneten controller. Mir war zu dem Einhängen in die Veranstaltung statt.
  • aber soweit ich sehen kann, die Lösung war die gleiche.
  • wenn ich wollte, um unnötigen code und ignorieren neue Funktionen, die speziell entwickelt, um die oben Korrektur obsolet.
InformationsquelleAutor jrdn | 2013-08-13
Schreibe einen Kommentar