Проверка Laravel 5.3 с несколькими полями

#php #laravel #validation

#php #laravel #проверка

Вопрос:

Мне нужно выполнить проверку в Laravel 5.3 с помощью средства проверки, но после некоторых поисков я не нашел решения, и именно поэтому я здесь.

В качестве примера у меня есть 3 таблицы: пользователи (могут иметь несколько хранилищ, могут иметь несколько человек) магазины (могут иметь несколько человек) лица (могут иметь несколько хранилищ) person_store

Итак, после входа пользователя в систему ему необходимо:

  1. Выберите магазин
  2. Выберите человека
  3. Укажите PIN-код пользователя

В этот момент пользователь находится на странице, подобной http://example.dev/store/1/user/2 с формой для указания его PIN-кода.

Когда пользователи отправляют эту форму, мне нужно проверить:

  • person.id = идентификатор пользователя (значение в URL-адресе)
  • person.user_id = идентификатор пользователя (значение в сеансе)
  • person.pin = pin-код (хэш значения, представленного на странице формы)
  • person_store.store_id = идентификатор магазина (значение в URL)
  • person_store.person_id = идентификатор пользователя (значение в URL)

Каков наилучший способ сделать это? Есть пример?

 protected function validator(array $data)
{
    return Validator::make($data, [
        'pin' => 'required',
    ]);
}
 

РЕДАКТИРОВАТЬ (то, что у меня есть на данный момент):

 public function login(Request $request, $storeId, $personId)
{
    $pin = $request->input('pin', '');
    $store = Store::findOrFail($storeId);
    $person = Person::findOrFail($personId);

    if (!Hash::check($pin, $person->pin)) {
        return $this->showPersonLoginForm($request, $storeId, $personId);
    } else {
        if (Hash::needsRehash($person->pin)) {
            $person->pin = Hash::make($pin);
            $person->save();
        }
    }
}
 

Спасибо.

Комментарии:

1. Класс validator на самом деле не является подходящим инструментом для использования здесь. Я бы посоветовал изучить объекты запроса формы, в частности ту часть, которая касается авторизации. laravel.com/docs/5.3/validation#authorizing-form-requests .

2. Класс проверки предназначен в первую очередь для того, чтобы убедиться, что данные, которые вы получаете от запроса, присутствуют и в формате (форматах), которые вам нужны для их обработки. Это то, что ты хочешь сделать? Или вы хотите убедиться, что пользователь, пытающийся выполнить запрос, авторизован для этого (например, он ввел правильный PIN-код)?

3. Что я хочу сделать, так это проверить, правильно ли пользователь ввел PIN-код, чтобы после этого получить доступ к другой странице ограничения. То, что у меня есть в данный момент, — это проверка контроллера для этого. Однако через несколько дней, просмотрев свой собственный код, я подумал, что, возможно, я делаю это неправильно и что мне следует использовать валидатор. Пожалуйста, проверьте мою правку, чтобы увидеть, что у меня есть прямо сейчас и выглядит ли она нормально. Спасибо.