php - 为整个网站添加额外的顶层,并从应用程序的干净版本开始
问题描述
问题:
我们有一个 Web 应用程序(在 Symfony 2.8 中),其中包含 +- 125 个填充数据的表。现在我们的客户要求添加一个名为“Division”的额外顶级。当他们创建一个新的部门时,他们会得到一份应用程序的空白副本以开始工作。所以几乎就像一张新的干净的床单。
用户保持不变,一些将访问 1 Division,一些将访问多个。
重要提示:未来会有更多的部门,客户管理员只需按“新部门”即可。
我们现在正在浏览整个应用程序:
顶级实体获得了一个额外的属性 Division(通过 DivisionTrait)添加到它们......
AND division.id = $session->get('current_division')
通过在所有控制器中添加类似的内容来更改每个查询。在所有表单类型中注入此部门 ID,并扩展每个查询。
当然还有很多测试和调试
但这是很多工作。
问题:
有哪些选项或设计模式可以让我们以更简单的方式实现这一目标?我相信我们不是第一个遇到这个问题的人。;)
解决方案
听起来您正在接近这个错误......或者您对问题的描述具有误导性。
在我看来,每个部门都有自己的应用程序(有自己的域)。拥有自己独立的数据库。共享是用户帐户,这意味着您需要创建第三个应用程序:身份验证系统,它可以识别您的用户并检查他们访问其中一个部门的授权。
所以,做一个认证系统。
将共享身份与您将用于 ACL/RBAC 的内部“用户”表相关联,但将登录留待处理外部应用程序的原因。
这样您就不必手动编辑所有代码并尝试将方形钉挤入圆孔中。