在symfony中管理不同的用户类型

时间:2016-02-01 12:54:05

标签: fosuserbundle symfony

我使用不同类型的用户(经理,用户,管理员)构建应用程序。

每种类型的用户都可以做特定的事情,并与其他实体有特定的关系。例如,Manager链接到许多Factory。但是一个简单的用户没有链接到任何工厂。 所以我必须为我的应用程序中的不同类型的用户管理不同的实体(代表不同的表)。

我看到FOSUserBundle只能处理一个实体进行用户身份验证。 所以我不知道如何处理我的用户管理。

有什么想做这个吗?

感谢您的时间。

2 个答案:

答案 0 :(得分:1)

你需要回顾一下你的设计。您应该使用用户角色来完成您的建议。您的所有用户都应该属于同一类。

您的用户类应该设置关系,比如说你的工厂类;

class User {

    // ....

    /**
     *
     * @ORM\ManyToMany(targetEntity="Factory", mappedBy="users")
     */
    private $factories;

    // .....
}

相反(可选:如果您需要向另一个方向提取数据)

class Factory {

    // ....    

    /**
     *
     * @ORM\ManyToMany(targetEntity="User", InversedBy="factories")
     */
    private $users;

}

然后,您可以通过防火墙限制/允许访问,也可以通过注释或脚本检查直接在控制器中访问。

有关您需要的所有详细信息,请参阅herehere

这样您就可以使用FOSUserBundle附带的任何身份验证。

当谈到CRUD活动时,您需要formType类。构建自己的baseUser类,以包含所有用户类型所需的所有字段,并为每个特殊情况扩展它。

答案 1 :(得分:0)

您可以创建一个特定的组,其中包含她的配置和概念。

必须使用FOSUserBundle逻辑插入这些组后。

通过混合2逻辑概念,您可以创建您想要的东西。