Назначить роль с FosUserBundle

Я действительно новичок в Symfony, я пытаюсь зарегистрировать ROLE для пользователя с помощью FosUserBundle, но я не могу понять, как это сделать. На самом деле я интегрировал также PUGXMultiUserBundle, чтобы иметь две разные формы для двух разных ролей. Может кто-нибудь мне помочь?

заранее спасибо

--ОБНОВИТЬ--

Я сообщаю свой код, чтобы объяснить четко. Я создаю эти файлы с руководством PUGXMultiUserBundle

Это моя сущность:

//C:\BitNami\wampstack-5.4.23-0\frameworks\symfony\src\Acme\ManagementBundle\Entity\UserGroundStation.php
<?php

namespace Acme\ManagementBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use PUGX\MultiUserBundle\Validator\Constraints\UniqueEntity;

/**
 * @ORM\Entity
 * @ORM\Table(name="user_GroundStation")
 * @UniqueEntity(fields = "username", targetClass = "Acme\ManagementBundle\Entity\User", message="fos_user.username.already_used")
 * @UniqueEntity(fields = "email", targetClass = "Acme\ManagementBundle\Entity\User", message="fos_user.email.already_used")
 */
class UserGroundStation extends User
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;
}

И это контроллер

C:\BitNami\wampstack-5.4.23-0\frameworks\symfony\src\Acme\ManagementBundle\ControllerRegistrationController.php
<?php

namespace Acme\ManagementBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class RegistrationController extends Controller
{
    public function registerUserGroundStationAction()
    {
        return $this->container
                    ->get('pugx_multi_user.registration_manager')
                    ->register('Acme\ManagementBundle\Entity\UserGroundStation');
    }
}

Извините за глупый вопрос, но это мой первый проект, и я чувствую себя немного не в своей тарелке.

--Update -SOLVED--

Я нашел решение здесь Извините за избыточность вопроса, я не нашел его в Google.

2 ответа

Решение

Способ назначения роли, например, ROLE_ADMIN, пользователю идет следующим образом.

//Get the enity manager
$em = $this->getDoctrine()->getManager();
//Get the user with name admin
$user= $em->getRepository("<your vendor>\<your bundle>\Entity\User")->findBy(Array("name" => "admin"));
//Set the admin role
$user->addRole("ROLE_ADMIN");
//Save it to the database
$em->persist($user);
$em->flush();

Вы также можете установить роль в конструкторе класса User Entity, который выглядит следующим образом:

public function __construct()
{
    parent::__construct();
    $this->addRole("ROLE_ADMIN");
}

Помните, что установка роли в конструкторе означает, что она не сохраняется в базе данных (если только вы не сохраните и не очистите) и применяется к каждому пользователю.
Если у вас есть дополнительные вопросы, пожалуйста, дайте мне знать.

PS: если вы используете Sonata Admin bundle, роль пользователя можно установить с помощью формы, расположенной в разделе Admin.

Это может быть также с консолью:

Symfony 2

php app/console fos:user:promote theusername ROLE_ADMIN

Symfony 3

php bin/console fos:user:promote theusername ROLE_ADMIN

Вы также можете активировать / деактивировать и другие вещи с помощью CLI.

http://symfony.com/doc/current/bundles/FOSUserBundle/command_line_tools.html

Другие вопросы по тегам