Инструменты пользователя

Инструменты сайта


limb3:ru:tutorials:shop:step3

Шаг3. Пользователи, и все, что с ними связано

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

Все это требует новых знаний по устройству Limb, поэтому мы решили разбить эту страницу на несколько дополнительных шагов, где постарались все подробно объяснить.

Класс User

Для начала нам необходима простейщая реализация модели пользователя - класс User, соответствующая требованиям:

  • свойства login, name и email являются обязательными
  • свойство email является правильным email-адресом

Файл shop/src/model/User.class.php:

class User extends lmbActiveRecord 
{
  protected $password;
 
  protected function _createValidator()
  {
    $validator = new lmbValidator();
 
    $validator->addRequiredRule('login');
    $validator->addRequiredRule('email');
    $validator->addRequiredRule('name');
 
    lmb_require('limb/validation/src/rule/lmbEmailRule.class.php');
    $validator->addRule(new lmbEmailRule('email'));
    return $validator;
  }
 
  protected function _onBeforeSave()
  {
    $this->_generatePassword();
  }
 
  protected function _generatePassword()
  {
    if($this->password)
      $this->setHashedPassword(self :: cryptPassword($this->password));
  }
 
  static function cryptPassword($password)
  {
    return md5($password);
  }
 
}

Т.к. имя класса совпадает с именем таблицы в БД, то имени таблицы указывать не надо.

Мы перекрыли в классе фабричный метод _createValidator(). Этот метод возвращает валидатор, который используется для проверки данных внутри объектов Product при сохранении. Подробнее о валидации данных в классах ACTIVE_RECORD в разделе "Валидация данных в объектах". Создаваемый в методе _createValidator() валидатор проверяет, что поля email, login и name должны быть заполнены, а поле email является валидным электронным адрессом.

Обратите внимание на метод _onBeforeSave(). Это так называемый метод расширения класса lmbActiveRecord, который дочерние классы могут использовать чтобы выполнять необходимые действия, например, перед сохранением новой записи, перед обновлением существующей, после сохранения и т.д. Список методов расширения класса lmbActiveRecord есть в разделе "Расширение поведения базового класса lmbActiveRecord".

В нашем случае мы использовали этот метод, чтобы шифровать поле password и формировать значение поля hashed_password. Таким образом мы будем хранить только хешированный пароль, а обновление хешированного пароля будет происходить только, если в поле password есть новое значение.

Далее

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
   __ __   __    ___    ___   __  __
  / // /  / /   / _ \  / _ \ / / / /
 / _  /  / /__ / , _/ / // // /_/ / 
/_//_/  /____//_/|_| /____/ \____/
 
limb3/ru/tutorials/shop/step3.txt · Последние изменения: 2010/11/10 10:02 (внешнее изменение)