Ядро системы Ultima Businessware® имеет уже готовые механизмы авторизации и проверки прав пользователей.
Информация о пользователях хранится в схеме ядра базы данных в следующих таблицах:
В таблице 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 вычисляется дата, когда следует предложить пользователю поменять пароль при очередной входе в систему.
Пользователи организованы с помощью групп в древовидную структуру, описание которой хранится в таблице USER_GROUPS:
•NAME – имя группы;
•PARENT_ID (FK) – ссылка на родительскую группу.
Для удобства работы содержимое таблицы USER_GROUPS автоматически реплицируется в таблицу USER_GROUPS_TRL, где для каждого родителя хранится список всех его потомков:
•ANCESTOR_ID (FK) – ссылка на группу-родитель;
•DESCENDANT_ID (FK) – ссылка на группу-потомок;
•ANCESTOR_LEVEL – уровень группы-родителя;
•DESCENDANT_LEVEL – уровень группы-потомка.
Принцип заполнения таблицы USER_GROUPS_TRL приведен на примере ниже: |
В таблице UI_TEMPLATES хранится конфигурация пользовательских интерфейсов (структура меню и наборы экранных форм клиентского приложения), которые можно гибко настраивать согласно своим потребностям:
•NAME – имя пользовательского интерфейса;
•DATA – конфигурация интерфейса;
•LANG_ID (FK) – язык интерфейса.
В таблице USER_SETTINGS хранятся настройки экранных форм клиентского приложения (в отличие от таблицы UI_TEMPLATES здесь хранится не перечень экранных форм, а их конфигурация, например, расположение и размер окон, перечень и последовательность колонок и т.д.):
•KEY – ключ, обычно название экранной формы;
•SAVED_NAME – название настроек, обычно используется для описания их логики;
•USER_ID (FK) – пользователь, которым были сделаны настройки;
•DATA – настройки экранной формы.
В таблице DEFAULT_SETTINGS хранятся настройки экранных форм по умолчанию, и если пользователь не вносил в них изменений, они буду загружены из нее, а не из USER_SETTINGS:
•KEY – ключ, обычно название экранной формы;
•DATA – настройки экранной формы.
При авторизации пользователя в клиентском приложении создается сессия, параметры которой хранятся в таблице SESSIONS:
•APP_SERVER_ID (FK) – сервер приложений, с которым работало клиентское приложение;
•START_TIME – время начала сессии;
•USER_ID (FK) – пользователь, под которым была совершена авторизация (вход был осуществлен с его комбинацией логин-пароль);
•LOGGED_USER_ID (FK) – пользователь, чей логин был введен при входе в клиентское приложение в опции "Войти под другим пользователем" (подробнее эта функция описана в разделе "Запуск приложения" руководства пользователя).
•MACHINE_NAME – имя компьютера в операционной системе, на котором было запущено клиентское приложение;
•OS_USER_NAME – имя пользователя, под которым был осуществлен вход в операционную систему, из под которой было запущено клиентское приложение.