限制与权限

时间:2017-07-28 00:57:17

标签: permissions

这是一个相当奇怪的问题,但我只想弄清楚如何为我的用户创建正确的“权限”并慢慢得出“限制”可能是更好的方法的结论,除了我不能在线查看此方法的任何内容。所以我认为我在做一些逻辑错误。

我有一个货运系统。 它有几种类型的用户/角色/观点(?)。

  • 管理员(查看全部)
  • 供应商(货运所有人)
  • 工厂(装运接收人)

他们都可以最终编辑货件。 但是供应商只允许在某些条件下进行编辑,例如货物尚未发货!然而,管理员和工厂工人可以做任何他们想做的事。供应商和工厂也只能编辑与其相关的货物。

首先,我想出了这些权限:

  • EditShipments( admin factory 供应商

但等等,这适用于管理员,但我不希望工厂编辑其他工厂的货物(可能通过编辑POST数据或使用API​​)。供应商也一样。

  • EditAnyShipment( admin
  • EditOwnReceivedShipments( factory
  • EditOwnSentShipments(供应商

现在进行编辑时,我必须确定用户是否是所有者,并使用该权限,或者如果用户是管理员,只是让他们按照自己的意愿行事。 这没关系..我猜。但是我必须根据情况编写一些逻辑来确定哪个权限实际上是有效的。这很烦人 - 除了“功能权限”我没有解决方案,我不知道如何正确实施。

让我们继续。现在我想限制供应商只能编辑未完成的货物。

  • EditAnyShipment( admin
  • EditOwnReceivedShipments( factory
  • EditOwnUnFinishedSentShipments(供应商

现在假设我还想让供应商能够编辑下周未发货的货件。现在是什么。

  • EditOwnUnFinishedSentShipmentsThatAreNotShippingInTheNextWeek( supplier

右?因此,随着要求的不断变化,这变得荒谬。

所以来到我目前奇怪的解决方案,其中上面写的是“权限”,这是“添加”,而是从另一个方向看,并使它们“限制”,将被“减去”。

(管理员不需要任何东西) * EditOnlyIfRecievedToMyFactoryShipment(工厂) * EditOnlyIfIsUnfinishedShipment(供应商) * EditOnlyIfIsNotShippingInAWeekShipment( Supplier

我在这做什么以及如何实现这一目标?围绕这个想法是否有某种设计模式?

0 个答案:

没有答案