@kirill-93

Где правильно проверять принадлежность сущности?

Модели:
class Page extends Model
{
  public function articles()
  {
    return $this->hasMany(Article::class);
  }
}

class Article extends Model
{
  public function page()
  {
    return $this->belongsTo(Page::class);
  }
}


Роуты:
Route::put('pages/{page}/articles/{article}', 'ArticleController@store');
Route::delete('pages/{page}/articles/{article}', 'ArticleController@delete');


Контроллер:
class ArticleController extends Controller
{
  public function store(Page $page, Article $article) 
  {
    if (Auth::user->id !== $page->user_id || $article->page_id !== $page->id) {
      abort(403);
    }

    $article->update(request()->all());
  }

  public function delete(Page $page, Article $article) 
  {
    if (Auth::user->id !== $page->user_id || $article->page_id !== $page->id) {
      abort(403);
    }

    $article->delete();
  }
}


Правильно ли будет вынести проверку Auth::user->id !== $page->user_id || $article->page_id !== $page->id в middleware? Сущностей много, получится довольно много мидлвэров. Правильно ли это?
  • Вопрос задан
  • 60 просмотров
Пригласить эксперта
Ответы на вопрос 1
aleksejjjj
@aleksejjjj
ИМХО я бы вообще убрал {page} из роута для статей. Лишняя сущность. Да и какая вам разница при редактировании - принадлежит ли статья странице? Злобный хакер введёт другой page_id и что? Как это повлияет на код $article->delete();/$article->update(request()->all());?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы