Пользователи сайта
- Подключение
- Пользователи
- Права доступа
- Регистрация
- Восстановление доступа
- Конструктор формы регистрации
- Настройки
- Шаблонные теги
- База данных
- Файлы
- База знаний
- Дополнения
Модуль предназначен для работы с пользователями сайта и их свойствами.
Административная часть модуля относится к части CMS «Управление» и является обязательной для установки.
Пользовательская часть модуля устанавливается опционально и состоит из трех частей: страница пользователя, регистрация, восстановление пароля.
Подключение
Подключение используется для доступа к свойствам текущего пользователя и работой с текущим пользователем.
Подключаемая часть – файл modules/users/users.inc.php. В нем описан класс
Users_inc. В модуле к объекту класса можно обратиться через переменную $this->diafan->_users
. Экземпляр класса создается при первом вызове
переменной.
Свойства
var id – номер текущего пользователя.
Пример:
// modules/usersettings/usersettings.php
// подобная конструкция используется очень часто, когда нужно определить,
// авторизован ли пользователь на сайте или нет. В данном примере «гость»
// будет перенаправлен на страницу ошибки 403.
*/
if(! $this->diafan->_users->id)
{
Custom::inc('includes/403.php');
}
var role_id – роль текущего пользователя.
var checked – пользователь проверен по идентификационному хэшу.
Пример:
// в файле adm/includes/action.php
// при отправке форм производится проверка на уникальность каждого запроса посредством хэш-кода пользователя
if (! $this->diafan->_users->checked)
{
echo 'Пользователь не прошел проверку.';
}
var admin – пользователь является администратором с доступом ко всем модулям.
Пример:
// Воспользуемся проверкой свойства admin для вывода приветствия администратору
if($this->diafan->_users->admin)
{
echo 'Здравствуйте, администратор!';
}
var errauth – ошибка авторизации.
Пример:
// при ошибке авторизации содержит в себе константу данной ошибки
switch ($this->diafan->_users->errauth)
{
case 'wrong_login_or_pass':
echo 'Неверный логин или пароль.';
break;
case 'blocked_30_min':
echo 'Вы превысили количество попыток, поэтому будете заблокированы на 30 минут';
break;
case 'blocked':
echo 'Логин не активирован или заблокирован.';
break;
}
var fields = array('name', 'fio', 'mail', 'phone', 'created', 'role_id', 'lang_id', 'htmleditor', 'admin_nastr', 'start_admin', 'useradmin', 'copy_files', 'config') – характеристики пользователя.
Поля, включенные в этот массив, можно вызывать через перменную $this->diafan->_users
. Служебная функция __get()
вернёт значение поля из базы данных для текущего пользователя.
Пример:
echo 'Здравствуйте, '.$this->diafan->_users->fio.'!
Ваш логин: '.$this->diafan->_users->name.'
Ваш e-mail: '.$this->diafan->_users->mail.'
Ваш телефон: '.$this->diafan->_users->phone.'
Вы зарегистрировались на сайте: '.date("d.m.Y H:i", $this->diafan->_users->created);
Методы
void set (object $user) – Определяет текущего пользователя.
- object $user: данные о текущем пользователе
Пример:
// авторизуем текущего посетителя сайта как пользователся с ID=5
$user = DB::query_fetch_object("SELECT * FROM {users} WHERE id=5");
$this->diafan->_users->set($user);
void delete_session_hash (integer $id) – Удаляет уникальный хэш сессии.
- integer $id: номер хэша
string get_hash () – Генерируем идентификационный пользовательский хэш.
Пример:
// includes/action.php
// используется для проверки уникальности запроса для данного пользователя
$this->result["hash"] = $this->diafan->_users->get_hash();
boolean true logout () – Очищает информацию о текущем пользователе.
Пример:
// includes/init.php
// инициирует выход пользователя из системы
if (strpos($_GET["rewrite"], "logout") !== false)
{
$this->_users->logout();
}
array auth (array $form_values) – Проверяет авторизован ли пользователь.
- array $form_values: массив с данными для авторизации - логин и пароль
Пример:
// includes/init.php
// проверка данных при авторизации пользователя
if (! empty($_POST['action']) && $_POST['action'] == 'auth')
{
$this->_users->auth($_POST);
}
boolean auth_loginza () – Проверяет авторизован ли пользователь.
Пример:
// includes/init.php
// проверка данных при авторизации пользователя с возможностью авторизации через сервис Loginza
if (! empty($_POST['action']) && $_POST['action'] == 'auth')
{
$this->_users->auth($_POST);
}
elseif (! empty($_POST['token']))
{
$this->_users->auth_loginza();
}
void create_avatar (string $name, string $file) – Загружает аватар.
- string $name: логин пользователь
- string $file: файл аватара
Пример:
// сгенерируетм аватар для пользователя с логином alex
// из файла http://site.ru/userfiles/alex_avatar.jpg
$name_user = 'alex';
$path_to_img = ABSOLUTE_PATH.USERFILES.'/alex_avatar.jpg';
$this->diafan->_users->create_avatar($name_user, $path_to_img);
boolean roles (string $action, [string $module_name = ''], [array $roles = array()], [string $type = 'admin']) – Проверяет есть ли права у пользователя на действие для модуля.
- string $action: действие
- string $module_name: модуль
- array $roles: права пользователя
- string $type: часть сайта административная/пользовательская
Пример:
// проверка прав пользоватля на редактирование категорий товаров
if (! $this->diafan->_users->roles("edit", "shop/category"))
{
echo "Нет доступа к модулю.";
}
void history (string $action, [string $module_name = ''], [integer|array $element_id = 0], [string $element_type = ''], [string $table_name = ''], [mixed $data = null]) – Фиксирует действие пользователя.
- string $action: действие
- string $module_name: модуль
- integer|array $element_id: модуль
- string $element_type: тип элемента
- string $table_name: название таблицы
- mixed $data: данные действия
integer create (array $data, [boolean $notify = false], [array $info = array()]) – Создаёт нового пользователя.
- array $data: данные пользователя
- boolean $notify: уведомлять пользователя
- array $info: данные уведомления
string get_secret ([integer $n = 8], [string $charset = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_!@#$%^*()-']) – Получает псевдослучайный набор символов.
- integer $n: количество символов в наборе
- string $charset: множество символов
void notify (integer $user_id, [array $info = array()]) – Отправляет уведомление пользователю.
- integer $user_id: идентификатор пользователя
- array $info: данные уведомления
string format_phone (string $phone) – Форматирует номер телефона.
- string $phone: — номер телефона
array get_IPs () – Получает список IP.
Пользователи
По умолчанию в системе существует главный администратор, имя и пароль которого задаются при установке DIAFAN.CMS.
Администратор не может удалить, заблокировать самого себя или изменить себе права доступа. Пользователь с правами администратора может авторизоваться на сайте только по секретному адресу панели управления сайтом.
Пользователей можно искать по ФИО.
Пользователи имеют следующие характеристики:
Права доступа
Часть модуля «Права доступа» позволяет редактировать возможности пользователей сайта.
Пользователи с любыми правами доступа в административную часть сайта могут авторизоваться на сайте только по секретному адресу панели управления сайтом.
Типы доступа имеют следующие характеристики:
Регистрация
Модуль «Регистрация» позволяет регистрироваться на сайте пользователям для получения дополнительных возможностей.
Чтобы вывести форму регистрации / редактирования на сайте, нужно прикрепить модуль к странице сайта.
Регистрация и редактирование осуществляются с помощью технологии Ajax, то есть без перезагрузки всей страницы.
Восстановление доступа
Восстановление доступа – это отдельный модуль в пользовательской части сайта (reminding). Он устанавливается вместе с модулем «Регистрация» и необходим для восстановления пароля пользователями.
Чтобы вывести форму восстановления доступа на сайте, нужно прикрепить модуль к странице сайта.
Восстановление доступа осуществляются с помощью технологии Ajax, то есть без перезагрузки всей страницы.
Конструктор формы регистрации
Форму регистрации / редактирования данных можно дополнить своими полями с помощью конструктора формы.
Конструктор – это дополнительные поля формы регистрации.
Дополнительные поля имеют следующие параметры.
Настройки
Шаблонные теги
Для работы с модулем «Пользователи» служат следующие шаблонные теги:
show_block – выводит статистику пользователей на сайте.
Атрибуты:
— defer – маркер отложенной загрузки шаблонного тега: event – загрузка контента только по желанию пользователя при нажатии кнопки "Загрузить", emergence – загрузка контента только при появлении в окне браузера клиента, async – асинхронная (одновременная) загрузка контента совместно с контентом шаблонных тегов с тем же маркером, sync – синхронная (последовательная) загрузка контента совместно с контентом шаблонных тегов с тем же маркером, по умолчанию отложенная загрузка не используется, обычный вывод шаблонных тегов в коде страницы;
— defer_title – текстовая строка, выводимая на месте появления загружаемого контента с помощью отложенной загрузки шаблонного тега;
— template – шаблон тега (файл modules/users/views/users.view.show_block_template.php; по умолчанию шаблон modules/users/views/users.view.show_block.php).
Пример:
<insert name="show_block" module="users">
выведет «Сейчас на сайте: 13 гостей, 9 пользователей.»
В шаблоне тега можно получить значение любого атрибута через переменную $result["attributes"]["название атрибута"]
.
show_login module="registration" – выводит форму авторизации или приветствие и ссылки на редактирование данных и выход, если пользователь авторизован.
Атрибуты:
— defer – маркер отложенной загрузки шаблонного тега: event – загрузка контента только по желанию пользователя при нажатии кнопки "Загрузить", emergence – загрузка контента только при появлении в окне браузера клиента, async – асинхронная (одновременная) загрузка контента совместно с контентом шаблонных тегов с тем же маркером, sync – синхронная (последовательная) загрузка контента совместно с контентом шаблонных тегов с тем же маркером, по умолчанию отложенная загрузка не используется, обычный вывод шаблонных тегов в коде страницы;
— defer_title – текстовая строка, выводимая на месте появления загружаемого контента с помощью отложенной загрузки шаблонного тега;
— template – шаблон тега (файл modules/registration/views/registration.view.show_login_template.php; по умолчанию шаблон modules/registration/views/registration.view.show_login.php).
Пример:
<insert name="show_login" module="registration">
выведет форму авторизации
В шаблоне тега можно получить значение любого атрибута через переменную $result["attributes"]["название атрибута"]
.
База данных
{users} – Пользователи
{users_actlink} – Код активации аккаунта
{users_history} – История действий пользователей
{users_notice} – Заметки пользователей
{users_param} – Дополнительные поля с данными о пользователях
{users_param_element} – Значения дополнительных полей с данными о пользователях
{users_param_role_rel} – Связи дополнительных полей с данными о пользователях и типов пользователей
{users_param_select} – Варианты значений дополнительных полей с данными о пользователях для типа список
{users_role} – Типы пользователей
{users_role_perm} – Права типов пользователей
{users_token} – Электронные ключи пользователей
Файлы
modules/registration/js/registration.form.js – JS-сценарий модуля «Регистрация»;
modules/registration/registration.php – контроллер модуля «Регистрация»;
modules/registration/registration.action.php – обработка запроса при регистрации пользователя;
modules/registration/registration.api.php – обрабатывает полученные данные из формы;
modules/registration/registration.model.php – модель модуля «Регистрация»;
modules/registration/views/registration.view.act.php – шаблон страницы активации аккаунта;
modules/registration/views/registration.view.form.php – шаблон формы регистрации;
modules/registration/views/registration.view.images.php – шаблон прикрепленных изображений;
modules/registration/views/registration.view.show_login.php – шаблон блока авторизации;
modules/registration/views/registration.view.show_login_top.php – шаблон блока авторизации;
modules/registration/views/registration.view.show_param.php – шаблон дополнительных полей в форме регистрации данных;
modules/registration/views/registration.view.success.php – шаблон страницы успешной регистрации;
modules/reminding/reminding.php – контроллер модуля «Восстановление пароля»;
modules/reminding/reminding.action.php – обработка запроса при отправке данных из формы восстановления пароля;
modules/reminding/reminding.model.php – модель модуля «Восстановление пароля»;
modules/reminding/views/reminding.view.form_change_password.php – шаблон формы смены пароля;
modules/reminding/views/reminding.view.form_mail.php – шаблон формы восстановления доступа;
modules/reminding/views/reminding.view.success.php – шаблон страницы успешной смены пароля;
modules/userpage/userpage.php – контроллер модуля «Страница пользователя»;
modules/userpage/userpage.model.php – модель модуля «Страница пользователя»;
modules/userpage/views/userpage.view.orders.php – шаблон заказов пользователя;
modules/userpage/views/userpage.view.show.php – шаблон страницы пользователя;
modules/users/admin/js/users.admin.edit.js – редактирование пользователей, JS-сценарий;
modules/users/admin/js/users.admin.role.js – редактирование типов пользователей, JS-сценарий;
modules/users/admin/users.admin.php – редактирование пользователей сайта;
modules/users/admin/users.admin.action.php – обработка POST-запросов в административной части модуля;
modules/users/admin/users.admin.config.php – настройки модуля;
modules/users/admin/users.admin.history.php – история действий пользователей;
modules/users/admin/users.admin.inc.php – подключение модуля к административной части других модулей;
modules/users/admin/users.admin.notice.php – заметки пользователей;
modules/users/admin/users.admin.notice.dashboard.php – заметки для событий;
modules/users/admin/users.admin.param.php – конструктор формы регистрации;
modules/users/admin/users.admin.role.php – редактирование типов пользователей;
modules/users/admin/widget/notice/css/users.admin.widget.notice.css – таблица стилей виджета;
modules/users/admin/widget/notice/js/users.admin.widget.notice.js – JS-сценарий виджета;
modules/users/admin/widget/notice/users.admin.widget.notice.php – контроллер виджета;
modules/users/admin/widget/notice/users.admin.widget.notice.action.php – обработка POST-запросов виджета;
modules/users/admin/widget/notice/users.admin.widget.notice.model.php – модель данных виджета;
modules/users/admin/widget/notice/views/users.admin.widget.notice.view.form.php – шаблон формы виджета;
modules/users/admin/widget/notice/views/users.admin.widget.notice.view.launchbar.php – шаблон представления панели запуска виджета;
modules/users/admin/widget/notice/views/users.admin.widget.notice.view.rows.php – шаблон представления заметок;
modules/users/admin/widget/notice/views/users.admin.widget.notice.view.show.php – шаблон представления виджета;
modules/users/admin/widget/notice/views/users.admin.widget.notice.view.toolbar.php – шаблон представления панели инструментов виджета;
modules/users/users.php – котроллер модуля «Пользователи на сайте»;
modules/users/users.api.php – обрабатывает полученные данные из формы;
modules/users/users.inc.php – подключение модуля;
modules/users/users.install.php – установка модуля;
modules/users/users.model.php – модель модуля «Пользователи на сайте»;
modules/users/views/users.view.show_block.php – шаблон статистики пользователей на сайте;
modules/usersettings/js/usersettings.form.js – JS-сценарий модуля «Настройки аккаунта»;
modules/usersettings/usersettings.php – контроллер модуля «Настройки аккаунта»;
modules/usersettings/usersettings.action.php – обработка запроса при изменении данных о пользователе;
modules/usersettings/usersettings.model.php – модель модуля «Настройки аккаунта»;
modules/usersettings/views/usersettings.view.attachments.php – шаблон прикрепленных файлов в настройках аккаунта;
modules/usersettings/views/usersettings.view.avatar.php – шаблон аватара;
modules/usersettings/views/usersettings.view.form.php – шаблон формы настроек аккаунта;
modules/usersettings/views/usersettings.view.images.php – шаблон прикрепленных изображений;
modules/usersettings/views/usersettings.view.show_param.php – шаблон дополнительных в настройках аккаунта.
Дополнения
База знаний
Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.