Назначить роль с 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