使用 FosUserBundle 分配角色



我真的是Symfony的新手,我正在尝试使用FosUserBundle向用户注册ROLE,但我无法管理如何做到这一点。实际上,我还集成了PUGXMultiUserBundle,以便为两个不同的角色提供两种不同的形式。谁能帮我?

提前致谢

--更新--

我报告我的代码是为了清楚地解释。我用PUGXMultiUserBundle的指南创建此文件

这是我的实体:

//C:BitNamiwampstack-5.4.23-0frameworkssymfonysrcAcmeManagementBundleEntityUserGroundStation.php
<?php
namespace AcmeManagementBundleEntity;
use DoctrineORMMapping as ORM;
use PUGXMultiUserBundleValidatorConstraintsUniqueEntity;
/**
 * @ORMEntity
 * @ORMTable(name="user_GroundStation")
 * @UniqueEntity(fields = "username", targetClass = "AcmeManagementBundleEntityUser", message="fos_user.username.already_used")
 * @UniqueEntity(fields = "email", targetClass = "AcmeManagementBundleEntityUser", message="fos_user.email.already_used")
 */
class UserGroundStation extends User
{
    /**
     * @ORMId
     * @ORMColumn(type="integer")
     * @ORMGeneratedValue(strategy="AUTO")
     */
    protected $id;
}

这是控制器

C:BitNamiwampstack-5.4.23-0frameworkssymfonysrcAcmeManagementBundleControllerRegistrationController.php
<?php
namespace AcmeManagementBundleController;
use SymfonyBundleFrameworkBundleControllerController;
class RegistrationController extends Controller
{
    public function registerUserGroundStationAction()
    {
        return $this->container
                    ->get('pugx_multi_user.registration_manager')
                    ->register('AcmeManagementBundleEntityUserGroundStation');
    }
}

抱歉这个问题很愚蠢,但这是我的第一个项目,我觉得有点不合适。

--

更新--已解决--

我在这里找到了解决方案很抱歉这个问题的冗余,我没有被谷歌找到。

向用户分配角色(例如ROLE_ADMIN)的方法如下。

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

还可以在用户实体类的构造函数中设置角色,如下所示:

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

请记住,在构造函数中设置角色意味着它不会保存在数据库中(除非您持久保存并刷新),并且它应用于每个用户。
如果您还有其他问题,请告诉我。

PS:如果您使用Sonata Admin捆绑包,则可以使用位于"管理员"部分中的表单设置用户的角色

这也可以与控制台一起使用:

交响乐

2
php app/console fos:user:promote theusername ROLE_ADMIN

交响乐 3

php bin/console fos:user:promote theusername ROLE_ADMIN

您还可以使用 CLI 激活/停用和各种其他操作。

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

相关内容

  • 没有找到相关文章

最新更新