Как прервать 403, когда пользователь посещает неаутентифицированную область в Новой - PullRequest
0 голосов
/ 11 декабря 2018

В моем приложении 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 Ответ

0 голосов
/ 12 декабря 2018

Текущее состояние политики auth()->user()->hasRole(['supervisor', 'admin']), проверяет только, предоставлены ли прошедшие проверку пользователи роли.Он не проверяет собственное сообщение.

Обновите свое условие публикации, как показано ниже.Также обратите внимание, что вторым параметром является экземпляр Post, а не Company

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