Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
webentwicklung:symfony2:symfony2_tutorials:sonata_user_bundle_installieren [24.01.2015 21:42]
cbeier [Konfiguration]
webentwicklung:symfony2:symfony2_tutorials:sonata_user_bundle_installieren [02.10.2017 22:43] (aktuell)
Zeile 40: Zeile 40:
  
 <WRAP center round info 100%> <WRAP center round info 100%>
-Je nachdem welche Sonata Bundles bereits installiert wurden (z.B. das Sonata Admin Bundle) kann es sein, dass bei dir schon einziele Bestandteile bereits in deiner Konfiguration vorhanden sind.+Je nachdem welche Sonata Bundles bereits installiert wurden (z.B. das Sonata Admin Bundle) kann es sein, dass bei dir schon einzelne Bestandteile bereits in deiner Konfiguration vorhanden sind.
 </WRAP> </WRAP>
  
Zeile 57: Zeile 57:
  
 doctrine: doctrine:
 +    dbal:
 +        # Your database configuration ...
 +        
 +        types:
 +            json: Sonata\Doctrine\Types\JsonType
 +
     orm:     orm:
         # And these in the config mapping definition (or enable auto_mapping):         # And these in the config mapping definition (or enable auto_mapping):
Zeile 67: Zeile 73:
                     ApplicationSonataUserBundle: ~                     ApplicationSonataUserBundle: ~
                     SonataUserBundle: ~                     SonataUserBundle: ~
-    dbal: 
-        types: 
-            json: Sonata\Doctrine\Types\JsonType 
  
 sonata_user: sonata_user:
Zeile 91: Zeile 94:
     # The encoders are important and missing in the original install instruction.     # The encoders are important and missing in the original install instruction.
     encoders:     encoders:
-        Symfony\Component\Security\Core\User\User: plaintext +        FOS\UserBundle\Model\UserInterface: bcrypt
-        FOS\UserBundle\Model\UserInterface: sha512+
          
     role_hierarchy:     role_hierarchy:
Zeile 238: Zeile 240:
 Hier endet jetzt die Original-Anleitung von Sonata und eigentlich ist die Implementierung des User Bundles jetzt auch abgeschlossen. Um jetzt jedoch auch unseren ersten User anlegen zu können, müssen noch die entsprechenden Datenbanktabellen angelegt werden: Hier endet jetzt die Original-Anleitung von Sonata und eigentlich ist die Implementierung des User Bundles jetzt auch abgeschlossen. Um jetzt jedoch auch unseren ersten User anlegen zu können, müssen noch die entsprechenden Datenbanktabellen angelegt werden:
  
-  php composer.phar doctrine:schema:update --force+  php app/console doctrine:schema:update --force
  
 ## Benutzer anlegen ## Benutzer anlegen
Zeile 244: Zeile 246:
 Nettwerweise gibt es auch einen Befehl für das Terminal, um einen User Eintrag in der Datenbank anzulegen: Nettwerweise gibt es auch einen Befehl für das Terminal, um einen User Eintrag in der Datenbank anzulegen:
  
-  php composer.phar fos:user:create+  php app/console fos:user:create 
 + 
 +Und für einen User mit Admin-Berechtigung: 
 + 
 +  php app/console fos:user:create --super-admin 
 + 
 + 
 +## Fehlermeldungen und ihre Lösung 
 + 
 +#### "No encoder has been configured for account" 
 + 
 +Wenn diese Fehlermeldung auftritt, müssen in der `security.yml` (app/config/security.yml) folgende Zeilen ergänzt werden: 
 + 
 +<code yaml> 
 +security: 
 +    encoders: 
 +        FOS\UserBundle\Model\UserInterface: sha512 
 +</code> 
 + 
 +Die Datei sollte dann so aussehen: 
 + 
 +<code yaml> 
 +security: 
 +    encoders: 
 +        Symfony\Component\Security\Core\User\User: plaintext 
 +        FOS\UserBundle\Model\UserInterface: sha512 
 + 
 +    role_hierarchy: 
 +        ROLE_ADMIN:       ROLE_USER 
 +        ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] 
 + 
 +# ... 
 +</code> 
 + 
 +Ein anderer Grund für diese Fehlermeldung kann sein, dass die Reihenfolge der Bundles in der `AppKernel.php` nicht richtig ist. Es ist wichtig, dass das `SecurityBundle` **vor dem** `FOSUserBundle` geladen wird. 
 + 
 +<code php> 
 +new Symfony\Bundle\SecurityBundle\SecurityBundle(), 
 +# ... 
 +new FOS\UserBundle\FOSUserBundle(), 
 +</code> 
 + 
 +#### Meldung "Unrecognized field: usernameCanonical" bei Login 
 + 
 +Wenn diese Meldung bei einem Loginversuch erscheint, nachdem man sich einen User angelegt hat, liegt dies daran, dass die Datenbanktabelle `fos_user_user` nicht vollständig erstellt wurde. Dort fehlen nämlich die sonst vorhanden Felder für Benutzername, Passwort etc. 
 + 
 +Der Grund ist, dass nur das Schema für das Model vom SonataUserBundle von Doctrine angelegt wurde. Um das Problem zu beheben, muss in der `config.yml` (app/config/config.yml) ein zusätzliches Mapping eingetragen werden: 
 + 
 +<code yaml> 
 +doctrine: 
 +    dbal: 
 +        orm: 
 +            entity_managers: 
 +                default: 
 +                    mappings: 
 +                        FOSUserBundle:
 +</code> 
 + 
 +Danach muss noch das Schema bzw. die Datenbank mittels Doctrine aktualisiert werden und natürlich ein neuer (dann vollständiger) User angelegt werden: 
 + 
 +  php composer.phar doctrine:schema:update --force 
      
 {{tag>symfony2 sonata tutorials}} {{tag>symfony2 sonata tutorials}}