代码之家  ›  专栏  ›  技术社区  ›  Ali Özen

当用户访问Nova中未经验证的区域时,如何中止403

  •  1
  • Ali Özen  · 技术社区  · 7 年前

    在我的laravel/nova应用程序中,我需要设置如下内容: 例如:

    | id | name        | user_id |
    |----|-------------|---------|
    | 1  | POST1       |    1    |
    | 2  | POST2       |    1    |
    | 3  | POST3       |    2    |
    

    在这种情况下,如果我们是id=1的用户,只需查看前两篇文章。 这很简单,我看了医生,用这个做的。

    在相关模型中,我这样做:

    public static function indexQuery(NovaRequest $request, $query)
    {
        if(auth()->user()->hasRole('admin'))
        {
            return $query;
        }
        if(!auth()->user()->hasRole('admin'))
        {
            return $query->where('user_id', auth()->user()->id);
        }
    }
    

    ..../resources/posts/3

    我一定是看不见了,我需要403页。我应该把这份声明放在哪里?

    public function view(User $user, Company $company)
    {
        return auth()->user()->hasRole(['supervisor', 'admin']);
    }
    

    这也不能解决问题。这些都是我尝试过的,只是没有展示出来。但我需要中止403或smt。

    谁能帮帮我我会很高兴的。提前谢谢。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Saumini Navaratnam    7 年前

    当前政策状况 auth()->user()->hasRole(['supervisor', 'admin']) ,仅检查经过身份验证的用户是否具有给定的角色。它不检查自己的帖子。

    Post Company

    public function view(User $user, Post $post)
    {
        return $post->user_id == $auth()->user()->id;
    }