Я пишу программу, чтобы у людей был свой личный архив кулинарных рецептов.
Конструктор RecipeController содержит:
$this->middleware('auth')
потому что только зарегистрированные пользователи могут использовать рецепты, но мне нужно также защитить доступ к моделям.
Дело в том, что пользователи могут просматривать и изменять только свои собственные рецепты.
Пример: пользователь TortelliEngineer может создать рецепт «Секретный рецепт Tortelli», используя модель Recipe; он может просматривать, обновлять и удалять свои рецепты, но никто другой не может видеть его драгоценный «Секретный рецепт Тортелли».
Итак, какой самый чистый способ?
- Я добавил атрибут user_id в модель Recipe.
- Я должен использовать этот параметр каждый раз, когда запрашиваю у базы данных рецепт (прощай, "findOrFail" по идентификатору).
- Это означает, что каждый раз, когда я делаю запрос, я должен получить доступ к объекту запроса, который содержит пользователя, который содержит User_id
- используя Auth::id() КАЖДЫЙ РАЗ, когда мне нужен один (или n) рецепт
Как это:
class RecipeRepository{
public function all(){
return Recipe::where('user_id', Auth::id())
->orderBy('created_at', 'asc')
->get();
}
public function find($recipe_id){
return Recipe::where('user_id', Auth::id())
->where('id', $recipe_id)
->firstOrFail();
}
Это правильно? Ты ненавидишь меня за это? Знаете ли вы лучшие или более правильные способы сделать это?