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

Manage differents user types in symfony

我构建了一个包含不同类型用户(经理、用户、管理员)的应用程序。

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

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

有做这件事的想法吗?

感谢您的宝贵时间。

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

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

通过混合使用 2 个逻辑概念,您可以创建您想要的内容。

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

您的用户 class 应该与您的工厂 class 建立关系,就像这样;

class User {

    // ....

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

    // .....
}

反之(可选:如果你需要从另一个方向拉取数据)

class Factory {

    // ....    

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

}

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

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

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

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