Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Kohana Model_Auth_User
Покинул форум
Сообщений всего: 129
Дата рег-ции: Июнь 2013
Помог: 7 раз(а)
Найдено в Kohana 3.3.1 (в предыдущих версиях не проверял).
Модель User как правило расширяется Model_Auth_User.
Для создания пользователя или изменения его данных необходимо использовать исключительно методы create_user и update_user или передавать extra_validation.
Объясню почему.
Здесь для пароля добавлено еще одно правило - минимальная длинна 10 символов.
Снова пробуем сохранить данные пользователя с пустым паролем - проходит, вводим пароль 3 символа - проходит, 5 символов проходит. И никакого намека на ошибки.
Идем дальше.
В каком же порядке выполняется процесс валидации в Kohana?!
Сначала выполняются фильтры, а потом совершается непосредственно валидация полей.
Опять идем в Model_Auth_User видим фильтр на поле пароля:
Вот здесь то зарыта собака! Фильтр хеширования выполняется до выполнения правил rules и для пустого или нет пароля возвращается хеш довольно большого размера(зависит от используемого метода хеширования). И соответственно поле окажется непустым и длина его будет достаточной чтобы пройти лимит min_length.
Вывод. Полностью доверять стандартной Model_Auth_User не стоит сохранять данные пользователя стоит через create_user и update_user, подставлять для пароля extra_validation или создать свои способы /методы, которые будут правильно решать данную задачу(например добавить правило, !последним! для поля, именно в rules, который будет выполнять хэш-преобразование).
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.