2015-12-01 6 views
2

У меня есть некоторые проблемы с выяснением, как это сделать должным образом. У меня есть Пользователи, которые могут создать Статьи которые могут быть viewed, edited и deleted. Я хочу ограничить действия редактирования и удаления, если текущий пользователь не является создателем статьи. Я уже делал это с помощью Политики и использовал Gate в запросе формы, но если я правильно понимаю, FormRequest предназначен только для запросов POST. И в настоящее время я передаю FormRequest в качестве параметра для действия getEdit(). Это кажется неправильным.Laravel 5 проверка роли пользователя перед

Итак, как я могу убедиться, что пользователь не может ни получить доступ, ни отредактировать статью?

+1

Я не вижу ничего плохого в использовании запросов формы для запросов GET. –

+0

с использованием Middleware будет хорошим выбором. Создайте промежуточное ПО и проверьте роль пользователя. Обработайте все эти маршруты через Middleware. –

ответ

0

Если вы уже определили политику вы можете получить доступ к нему с помощью Gate фасада в пределах вашего действия контроллера, как это:

public function getEdit($id) 
{ 
    $reference = Reference::findOrFail($id); 

    if (Gate::denies('owns-reference', $reference)) 
     abort(403); 

    return view('reference.edit') 
      ->with('reference', $reference); 
} 

Просто убедитесь, чтобы включить Gate на верхней части файла, как это:

use Gate;

+0

Да, я бы не хотел, чтобы этот король логики в моем контроллере, если это возможно – user3813360

+0

Могу ли я спросить, почему нет? – Tim

+0

Могу ли я сделать что-то подобное с промежуточным программным обеспечением? – user3813360

Смежные вопросы