2016-12-09 1 views
1

Ich möchte Rolle für Benutzer festlegen. Ich bin mit Code unter:Fosuser Bundle - Einstellungsrolle für Benutzer

$user = this->getDoctrine()->getRepository('BlogBundle:User')->findOneById('11'); 
    $em = $this->getDoctrine()->getManager(); 
    $t=array('ROLE_ADMIN'); 
    $user->setRoles($t); 
    $em->persist($user); 
    $em->flush(); 
    return new Response('okk'); 

Als ich gesetzt ‚ROLE_ADMIN‘ alles in Ordnung ist, aber wenn ich ‚ROLE_USER‘ Datenbank Zelle leer gesetzt. Warum?

Vielen Dank für Hilfe im Voraus.

+1

http://stackoverflow.com/questions/18779655/fosuserbundle-admin-area-not-accessible-after-login hat standardmäßig erstellte Benutzerrolle ROLE_USER, die in DB gespeichert wird wie leere Array umgewandelt JSON a: 0: {} Ist der Wert der Spalte ein leerer Wert oder die Darstellung eines leeren JSON-Arrays? –

Antwort

1

Die Spalte Rollen in der Benutzer-Tabelle sollte.

überprüfen, ob ein Benutzer eine bestimmte Rolle hat (inclusing ROLE_USER)

if ($this->get('security.context')->isGranted('ROLE_USER')) { 
    // the user has the ROLE_USER role 
} 

gibt es auch

$user->getRoles() 

Eine weitere Möglichkeit prüfen zu verdoppeln, wenn die Verwendung wirklich die ROLE_USER

php app/console fos:user:promote 
hat

Wenn Sie dazu aufgefordert werden, geben Sie den Benutzernamen gefolgt vonein

anzumerken, dass

User "[email protected]" angegeben habe bereits "ROLE_USER" Rolle haben.

0

Im FOS-Benutzerpaket haben alle Benutzer die Rolle ROLE_USER. Es wäre überflüssig, diese Rolle hinzuzufügen/zu speichern.

Wenn Sie in der Codebasis von FOSUserBundle danach suchen, wird die Rolle als ROLE_DEFAULT in der Klasse UserInterface bezeichnet. nur mit der Rolle

a:0:{} 

für Benutzer haben ROLE_USER

Programmatische Möglichkeit der Überprüfung

+0

Vielen Dank für die Antworten – appson

Verwandte Themen