如何在自己的插件中添加仅编辑一条记录的权限
How to add permission to edit only one record in own plugin
我有自己的插件来存储酒吧,我想允许酒吧所有者管理他们的网站。我不知道该怎么做。如何为特定的后端用户只显示他的记录?
假设您有一个 User 模型和一个 Pub 模型,接下来就是在它们之间创建关系。一对多关系很适合这里,因为一个用户可以拥有一个或多个酒吧,但一个酒吧可以属于一个用户。
在用户模型中
public function pubs()
{
return $this->hasMany(Pub::class);
}
在酒吧模式中
public function owner()
{
return $this->belongsTo(User::class);
}
检索属于用户的发布
$pubs = Auth::user()->pubs;
或
$pubs = Pub::where('user_id', Auth::user()->id)->get();
以类似的方式,您可以通过检查用户 ID 是否相同来检查请求的发布者是否为所有者。
你有两个选择。
您可以将 user_id
(或 owner_id
)列添加到 pubs
table。这意味着每个酒吧都属于一个用户。您还必须添加一种定义管理员用户的方法。最简单的解决方案是将 is_admin
列添加到 users
table。下一个最简单的解决方案是在 users
中有一个 role
列,其中一个角色是 "admin"(或代表 "admin" 的数字)。然后您将使用一些不错的应用程序代码来完成所有这些工作。
你可以创建一个 user_pub
table 来作为 link table 允许 table 之间的多对多关系=14=] 和 pubs
。而且您必须确保(在应用程序代码中)非管理员用户没有 link 到多个酒吧。
选项 2 更灵活,但如果您不需要那么大的灵活性(现在或将来),选项 1 更简单。
我有自己的插件来存储酒吧,我想允许酒吧所有者管理他们的网站。我不知道该怎么做。如何为特定的后端用户只显示他的记录?
假设您有一个 User 模型和一个 Pub 模型,接下来就是在它们之间创建关系。一对多关系很适合这里,因为一个用户可以拥有一个或多个酒吧,但一个酒吧可以属于一个用户。
在用户模型中
public function pubs()
{
return $this->hasMany(Pub::class);
}
在酒吧模式中
public function owner()
{
return $this->belongsTo(User::class);
}
检索属于用户的发布
$pubs = Auth::user()->pubs;
或
$pubs = Pub::where('user_id', Auth::user()->id)->get();
以类似的方式,您可以通过检查用户 ID 是否相同来检查请求的发布者是否为所有者。
你有两个选择。
您可以将
user_id
(或owner_id
)列添加到pubs
table。这意味着每个酒吧都属于一个用户。您还必须添加一种定义管理员用户的方法。最简单的解决方案是将is_admin
列添加到users
table。下一个最简单的解决方案是在users
中有一个role
列,其中一个角色是 "admin"(或代表 "admin" 的数字)。然后您将使用一些不错的应用程序代码来完成所有这些工作。你可以创建一个
user_pub
table 来作为 link table 允许 table 之间的多对多关系=14=] 和pubs
。而且您必须确保(在应用程序代码中)非管理员用户没有 link 到多个酒吧。
选项 2 更灵活,但如果您不需要那么大的灵活性(现在或将来),选项 1 更简单。