如何添加权限以仅编辑自己插件中的一条记录

时间:2019-09-16 19:07:43

标签: laravel octobercms

我有一个自己的插件,用于存储酒吧,并且我希望允许酒吧所有者管理他们的网站。我不知道该怎么做。如何仅向特定后端用户显示其记录?

2 个答案:

答案 0 :(得分:0)

假设您有一个User模型和一个Pub模型,下一步是在它们之间建立关系。一对多关系在这里非常适合,因为一个用户可以拥有一个或多个酒吧,但一个酒吧可以属于一个用户。

在用户模型中

public function pubs()
    {
        return $this->hasMany(Pub::class);
    }

在Pub模型中

public function owner()
    {
        return $this->belongsTo(User::class);
    }

要检索属于用户的酒吧

$pubs = Auth::user()->pubs;

$pubs = Pub::where('user_id', Auth::user()->id)->get();

您可以通过类似的方式,通过检查用户ID是否相同来检查请求的发布用户是否是所有者。

答案 1 :(得分:0)

您有两个选择。

  1. 您可以在user_id表中添加owner_id(或pubs)列。这意味着每个酒吧都属于一个用户。您还必须添加一种定义管理员用户的方法。最简单的解决方案是将is_admin列添加到users表中。下一个最简单的解决方案是在role中有一个users列,并且其中一个角色是“ admin”(或代表“ admin”的数字)。然后,您将使用一些不错的应用程序代码来完成所有这些工作。

  2. 您可以创建一个user_pub表作为链接表,该链接表允许userspubs之间存在多对多关系。而且,您必须(在应用程序代码中)确保非管理员用户没有指向多个酒吧的链接。

选项2更灵活,但是如果您不需要那么多的灵活性(现在或将来),则选项1会更简单。