Ядро системы Ultima Businessware® имеет уже готовые механизмы авторизации и проверки прав пользователей.

Информация о пользователях хранится в схеме ядра базы данных в следующих таблицах:

Users_Tables

table В таблице USERS хранится информация о пользователях:

LOGIN – логин, под которым осуществляется вход в систему;

NAME – имя пользователя, по которому система обращается к нему;

PASSWORD – хеш-сумма пароля, под которой в связке с логином осуществляется вход в систему;

IS_LOCKED – флаг, указывающий на блокировку учетной записи пользователя, вход в систему при его значении true невозможен;

TIME_OFFSET – часовой пояс пользователя;

ROLE_ID (FK) – роль пользователя;

GROUP_ID (FK) – группа, в которую включен пользователь;

LANG_ID (FK) – язык интерфейса;

DEFAULT_PRINTER_ID (FK) – принтер по умолчанию;

UI_TEMPLATE_ID (FK) – шаблон пользовательского интерфейса;

BALANCE_ID (FK) – код баланса, используется для хранения в одной базе данных сведений по нескольким организациям. Указанный код баланса будет подставляться автоматически в случаях, когда у пользователя будет доступна возможность его выбора;

MUST_CHANGE_PASSWORD – флаг, указывающий на необходимость смены пароля при следующем входе в систему;

INFINITE_PASSWORD_LIFETIME – флаг, указывающий что время действия пароля неограничено (true – время действия пароля неограничено, false – ограничено);

PASSWORD_LIFETIME_DAYS – число дней, которым ограничено время действия пароля, используется в сочетании с установкой флага INFINITE_PASSWORD_LIFETIME в значение false;

LAST_PASSWORD_CHANGE – дата последней смены пароля. Из нее и времени действия пароля PASSWORD_LIFETIME_DAYS вычисляется дата, когда следует предложить пользователю поменять пароль при очередной входе в систему.

table Пользователи организованы с помощью групп в древовидную структуру, описание которой хранится в таблице USER_GROUPS:

NAME – имя группы;

PARENT_ID (FK) – ссылка на родительскую группу.

table Для удобства работы содержимое таблицы USER_GROUPS автоматически реплицируется в таблицу USER_GROUPS_TRL, где для каждого родителя хранится список всех его потомков:

ANCESTOR_ID (FK) – ссылка на группу-родитель;

DESCENDANT_ID (FK) – ссылка на группу-потомок;

ANCESTOR_LEVEL – уровень группы-родителя;

DESCENDANT_LEVEL – уровень группы-потомка.

35_example

Принцип заполнения таблицы USER_GROUPS_TRL приведен на примере ниже:

Users_Groups

table В таблице UI_TEMPLATES хранится конфигурация пользовательских интерфейсов (структура меню и наборы экранных форм клиентского приложения), которые можно гибко настраивать согласно своим потребностям:

NAME – имя пользовательского интерфейса;

DATA – конфигурация интерфейса;

LANG_ID (FK) – язык интерфейса.

table В таблице USER_SETTINGS хранятся настройки экранных форм клиентского приложения (в отличие от таблицы UI_TEMPLATES здесь хранится не перечень экранных форм, а их конфигурация, например, расположение и размер окон, перечень и последовательность колонок и т.д.):

KEY – ключ, обычно название экранной формы;

SAVED_NAME – название настроек, обычно используется для описания их логики;

USER_ID (FK) пользователь, которым были сделаны настройки;

DATA – настройки экранной формы.

table В таблице DEFAULT_SETTINGS хранятся настройки экранных форм по умолчанию, и если пользователь не вносил в них изменений, они буду загружены из нее, а не из USER_SETTINGS:

KEY – ключ, обычно название экранной формы;

DATA – настройки экранной формы.

table При авторизации пользователя в клиентском приложении создается сессия, параметры которой хранятся в таблице SESSIONS:

APP_SERVER_ID (FK) – сервер приложений, с которым работало клиентское приложение;

START_TIME – время начала сессии;

USER_ID (FK) – пользователь, под которым была совершена авторизация (вход был осуществлен с его комбинацией логин-пароль);

LOGGED_USER_ID (FK) – пользователь, чей логин был введен при входе в клиентское приложение в опции "Войти под другим пользователем" (подробнее эта функция описана в разделе "Запуск приложения" руководства пользователя).

MACHINE_NAME – имя компьютера в операционной системе, на котором было запущено клиентское приложение;

OS_USER_NAME – имя пользователя, под которым был осуществлен вход в операционную систему, из под которой было запущено клиентское приложение.