Добрый день!
Мы сейчас разрабатываем стороннее приложение для Террасофт (мобильный клиент для 3.X) и остался ряд технических вопросов, связанных с лицензированием (оно будет происходить через менеджер лицензий Террасофта):
1. Как из внешней системы получить сведения о наличии лицензии у конкретного пользователя (параметры: логин, название модуля)?
2. Как из внешней системы проверить пароль пользователя (параметры: логин, пароль)? И для windows и для sql пользователей?
Заранее спасибо за ответ.
Нравится
Алена, приветствую!
Дело в том, что логика лицензирования находится в ядре и это единственный функционал, который закрыт для клиентов.
Что касается вопроса в общем, то могу описать принцип работы любого модуля, который создается в рамках дополнительного функционала.
В любом случае, будет это мобильное приложение или локальное на ПК приложение, все они обращаются к БД, в которой есть перечень модулей. Некоторые из них отвечают за клиентскую часть, некоторые будут отвечать за мобильную часть.
Для того, что бы всё корректно работало, необходимо, что бы при обращению к модулю, пользователь имел лицензию на него, это означает, что должен быть продукт, который имеет в своем составе данный перечень модулей.
Поэтому, для реализации вашей задачи, главное настроить корректное обращение к БД.
С уважением,
Белецкий Арсений
Группа компаний Terrasoft
Арсений, спасибо, я, наверное, не совсем корректно сформулировала вопрос :) Нас интересует именно непосредственно уже сам запрос к БД.
Как-то так?:
select * from tbl_License l
join tbl_AdminUnit au on (l.UserID=au.ID)
join tbl_Contact c on (c.ID=au.UserContactID)
where Module='COMMON' and c.Name='Supervisor'
Здравствуйте, Алена.
Да, все верно:
SELECT CASE WHEN EXISTS( select * from tbl_License l join tbl_AdminUnit au on (l.UserID=au.ID) join tbl_Contact c on (c.ID=au.UserContactID) where Module='COMMON' and c.Name='Supervisor') THEN 1 ELSE 0 END