@capitancrazy

Как лучше проводить проверку соответствия контента выбранному пользователю?

У меня есть таблица предзаказов, вкючающая такие поля
$table->increments('id');
            $table->char('group_cd', 16);
            $table->char('group_sub_cd', 2);
            ...
            $table->integer('customer_id')->unsigned()->index();

group_cd идентификатор компании и group_sub_cd идентификатор филиала и cusotmer_id идентификатор клиента

Существуют 2 метода создать нового клиента.
Этот не получает идентификатора прездаказа
public function create()
  {
    $customer = new Customer;
    return view('folder1.customer', compact('customer'));
  }

а этот получает
public function createWithPreorder($preorderId)
  {
    $this->checkPreorderGroup($preorderId);
    $customer = new Customer;
    return view('customer.customer', compact('customer'));
  }


checkPreorderGroup проверяет, относится ли этот предзаказ к той же компании, к которой относится залогиненый пользователь.
private function checkPreorderGroup($preorderId)
    {
        $preorder = EstimateInfo::where('id', $preorderId)->group()->get();
        if ($preorder->isEmpty()) {
            return abort(404);
        }
        return;
    }

->group() из модели EstimateInfo( предзаказ).
public function scopeGroup($query)
    {
        $authUser= Auth::user();
        return $query->where('group_cd', $authUser->group_cd)->where('group_sub_cd', $authUser->group_sub_cd);
    }


Мне кажется неправильным, что в контроллере клиента проверяется предзаказ.
Так же в других методах аналогично я проверяю самого клиента, относится ли он к группе пользователя.
И то что у меня оба методы идентичны, create и createWithPreorder мне не нравится.

1. Поэтому мой вопрос, как вы проводите такого рода проверки?
2. Если стоящие пакаджи включающие подобный функционал и расширающие? Испоьзуете ли вы их?

Изпользую laravel 5.1
  • Вопрос задан
  • 129 просмотров
Решения вопроса 1
Astatroth
@Astatroth
Я тут случайно
Используйте observer, проверка будет не в контроллере и один раз.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы