понедельник, 13 декабря 2010 г.

DX Auth: Руководство пользователя. Анатомия таблиц

Седьмая часть перевода документации библиотеки авторизации DX Auth для фреймворка CodeIgniter.

Описание таблиц и их полей, используемых в DX Auth



Таблица 'users'

Это основная таблица, в ней хранятся данные пользователей.

  • id — Первичный ключ. Уникальный идентификатор пользователя
  • role_id — Внешний ключ к таблице 'roles'. По умолчанию 1
  • username — Имя пользователя
  • password — Пароль пользователя (хэш)
  • email — Адрес электронной почты пользователя
  • banned — Указывает запрещён доступ пользователю или нет (1 = запрещён, 0 = не запрещён). По умолчанию 0
  • ban_reason — Причина по которой пользователю запрещён доступ
  • newpass — Новый пароль после запроса забытого пароля
  • newpass_key — Ключ для смены пароля. Если ключ проверен функцией reset_password(), то происходит замена значения поля password на значение поля newpass
  • newpass_time —Время и дата, когда был произведён запрос на сброса пароля
  • last_ip — IP адрес с которого пользователь зарегистрировался. Если 'DX_login_record_ip' установлено TRUE, то каждый раз когда пользователь войдёт IP-адрес сохраняется в это поле
  • last_login — Если в файле конфигурации 'DX_login_record_time' установлен TRUE, время и дата входя сохраняется в этом поле
  • created —Время и дата когда запись о пользователе была создана. Позволяет определить когда пользователь был зарегистрирован
  • modified — Время и дата, когда запись о пользователе была изменена

Имя пользователя не должно содержать пробелы другие символы которые могут использоваться в уязвимостях. Поэтому при проверки имени пользователя во время регистрации настоятельно рекомендуется использовать alpha_dash в проверке формы.


Таблица 'user_temp'

Таблица пользователей которые ещё не активировали свои учётные записи

  • id — Первичный ключ
  • username — Имя пользователя
  • password — Пароль пользователя (хэш)
  • email — Электронная почта пользователя
  • activation_key — Ключ необходимый для активации учётной записи. Пользователи которые провели активацию удаляются из этой таблицы
  • last_ip — IP адрес с которого пользователь зарегистрировался
  • created — Дата и время когда запись была создана

Если 'DX_email_activation' установлено в 'TRUE', то при регистрации новых пользователей записи создаются в этой таблице, вместо таблицы 'users'. После активации учётной записи, запись перемещается из этой таблицы в таблицу 'users'.


Таблица 'user_profile'

Таблица для профилей пользователей

  • id — Первичный ключ
  • user_id — Внешний ключ для таблицы users
  • Другие поля. Вы можете добавлять и удалять поля, в соответствии с вашими потребностями

Таблица 'user_autologin'

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

  • key_id — Первичный ключ, key_id создаётся с уникальным ключём когда пользователь входит и использует опцию 'запомнить меня'
  • user_id — Первичный ключ, id пользователя который использовал при входе опцию 'запомнить меня'
  • user_agent — User-agent браузера в котором пользователь использовал опцию 'запомнить меня'
  • last_ip — IP-адрес пользователя с которого пользователь использовал опцию 'запомнить меня'
  • last_login — Дата и время когда пользователь использовал опцию 'запомнить меня'

Обычно, вам не нужно изменять данные этой таблицы.


Таблица 'roles'

Таблица содержит имена полей такие как: 'registered user', 'admin', 'moderator' и т.д.

  • id — Первичный ключ
  • parent_id — Ссылка на id. Означает что роль будет наследовать parent_id роль. По умолчанию 0 (нет родительской роли)
  • name — Имя роли

Вы должны иметь как минимум 2 записи в таблице.

Первая запись с id = 1 должна называться 'registered user' (зарегистрированный пользователь), так как при создании записи нового пользователя, в таблице 'users', ему автоматически присваивается 'role_id = 1'.

И ещё одна запись должна называться 'admin', значение id не важно.

Если вы не планируете использовать функцию ограничения прав доступа, то вам не нужно беспокоится о parent_id, просто оставьте его равным 0. Но если вы планируете использовать функцию check_uri_permissions(), прочтите в «DX Auth: Руководство пользователя. Справочник по функциям» какой эффект имеет значение parent_id.


Таблица 'permissions'

Таблица прав доступа

  • id — Первичный ключ
  • role_id — Внешний ключ к таблице 'roles'
  • data(text) — Права доступа. Права доступа хранятся в виде массива преобразованного в строку

check_uri_permissions(), get_permission_value(), get_permissions_value() используют данные этой таблицы. Что бы оперировать данными этой таблицы вы можете использовать функции модели permissions, или написать свои собственные. Смотрите в примерах как можно устанавливать права доступа.


Таблица 'login_attempts'

В таблице хранятся данные о попытках входа

  • id — Первичный ключ
  • ip_address — IP-адрес с которого кто-то пытался войти
  • time — дата и время когда кто-то пытался войти

DX Auth использует данные из этой таблицы только если в файле конфигурации 'DX_count_login_attempts' установлено 'TRUE'. И если попыток входа с определённого IP-адреса было больше чем установлено в 'DX_max_login_attempts', в файле конфигурации, то они больше не будут считаться.


Таблица 'role_uri'

Устаревшая с версии 1.0.2 и выше. Используйте таблицу 'permissions'

Похожие по тематике посты:

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