Laravel 来自不同用户的控制器更新模型

Laravel Controller update model from different users

在我的 Laravel 应用程序中,我有一个名为 Project 的模型,其中有一个名为 approved_at 的 属性。还有一个ProjectController,里面包含了常用的方法 *(index, show, create, update, edit...)

现在,创建 Project 的用户可以对其进行编辑(修改其其他属性),但只有部分“员工”成员有权批准。

据我了解,审批操作可以有两种方式:

  1. 两个用户,从他们各自的观点(让我们称他们为 editapprove)触发 ProjectController@update 方法,这将在内部区分谁可以做什么授权或政策;
  2. 我创建了一个新的 ProjectApprovalController,它有自己的 update 方法,并在端点检查授权(例如,/projects/{id}/approve)。

解决此行为的最佳方法是什么?

这取决于你以后想用这个做什么。如果在 approve 方法后面有一些额外的步骤要做,例如:连接到外部微服务以检查项目是否存在于外部数据库中,那么你绝对应该拆分它。

如果你不介意,我建议你不要太关注实现。您的应用程序应该可以像构建它一样快速移动。格雷格·杨 (Greg Young) 对此有一个很棒的演讲,名为“The Art of 销毁软件”。更加专注于使用 SOLID 原则构建您的解决方案并测试此方法的行为,以便将来更容易替换。

回答你的问题,第二种方案比较restful的做法,不知道是不是用大炮打飞