Php 拉威尔·盖茨和/或政策
现在我正在考虑在我的项目中实施政策。 所以我想要3种角色:用户、管理员和办公室 我有一个Customer类,它具有以下CRUD函数:Php 拉威尔·盖茨和/或政策,php,laravel,Php,Laravel,现在我正在考虑在我的项目中实施政策。 所以我想要3种角色:用户、管理员和办公室 我有一个Customer类,它具有以下CRUD函数: class CustomerController extends Controller { public function getAllCustomer() { return Customer::get(); } public function addNewCustomer(Request $request) { $validatedData
class CustomerController extends Controller
{
public function getAllCustomer()
{
return Customer::get();
}
public function addNewCustomer(Request $request)
{
$validatedData = $request->validate([
'Title' => 'required',
'Name' => 'required|max:255',
'Surname' => 'required|max:255',
'Email' => 'required',
'Phone' => 'required',
'Password' => 'required',
'dateofBirth' => 'required'
]);
return \app\model\Customer::create($request->all());
}
public function update (Request $request , Customer $id)
{
$id->update($request->all());
}
public function destroy (Customer $id)
{
$id->delete();
}
我想要的是,只有管理员才能为所有客户使用CRUD函数。用户应该只能对自己的数据使用CRUD函数(因此客户只能对自己的数据使用CRUD函数)
我读了这篇文章:
但我仍然不知道如何在我的项目中实现它,以及我是否应该使用门或策略(看起来策略更容易,还是?)
如果有人能给我写一个如何在我的工作中实施的例子,我将非常感激。为您的每个模型创建策略。将策略绑定到路由 创建一个父策略,所有其他策略将扩展并添加到该父策略中,然后再使用方法,该方法将基本上检查您的用户是否为管理员,如果是,则无需进一步检查
public function before(User $authenticatedUser, $ability)
{
// super admin can access everything
if ($authenticatedUser->role == 'super_admin') {
return true;
}
return null; //fall through to the policy method
}
创建具有编辑权限检查的发布策略
class PostPolicy extends Policy
{
public function edit(User $authenticatedUser, Post $post)
{
return $authenticatedUser->id == $post->author_id;
}
}
关于如何使用策略的一般想法就这么简单。为每个模型创建策略。将策略绑定到路由 创建一个父策略,所有其他策略将扩展并添加到该父策略中,然后再使用方法,该方法将基本上检查您的用户是否为管理员,如果是,则无需进一步检查
public function before(User $authenticatedUser, $ability)
{
// super admin can access everything
if ($authenticatedUser->role == 'super_admin') {
return true;
}
return null; //fall through to the policy method
}
创建具有编辑权限检查的发布策略
class PostPolicy extends Policy
{
public function edit(User $authenticatedUser, Post $post)
{
return $authenticatedUser->id == $post->author_id;
}
}
关于如何使用政策的总体思路就这么简单。您看过官方文档了吗?是的,但我没有为不同的榜样找到解决方案。你看过官方文件吗?是的,但是我没有为不同的榜样找到解决方案。