标签: symfony-workflows

Symfony 工作流程组件和安全投票者?

TL;DR:如何向转换添加自定义约束(即安全投票者)?

我的应用程序需要一些工作流管理系统,所以我想尝试 Symfony 的新Workflow Component。让我们以拉取请求工作流程为例。

在此示例中,仅描述状态及其转换。但是如果我想向此工作流程添加其他约束怎么办?我可以想象一些限制:

  • 只有管​​理员可以接受 Pull 请求
  • 用户只能重新打开自己的 Pull Request
  • 用户无法重新打开超过 1 年的 PR

虽然在这种情况下您可以使用事件,但我认为这不是处理它的最佳方法,因为事件是在$workflow->apply(). 我想事先知道是否允许用户更改状态,以便我可以隐藏或禁用该按钮。(不是这样的)。

LexikWorkflowBundle通过向步骤(转换)添加角色部分解决了这个问题切换到这个捆绑包可能是一个好主意,但我想弄清楚如何在没有这个捆绑包的情况下解决这个问题。

添加自定义实体约束(“超过 1 年的 PR 不能重新打开”)和安全约束(“只有管理员可以接受 PR ”,也许通过使用 Symfony 的安全投票者)到转换的最佳方法是什么?

更新: 澄清一下:我想向我的工作流程添加权限控制,但这并不一定意味着我想将其紧密耦合到工作流程组件。我想坚持良好的做法,因此给定的解决方案应该尊重单一责任原则。

php workflow symfony symfony-security symfony-workflows

0
推荐指数
1
解决办法
2145
查看次数