Добрый день!
Во время разработки возник вопрос прав доступа.
Ситуация следующая: Создал в администрировании группы (школы), в которые будут добавлены пользователи. Как распределить права доступа так, чтобы пользователь видел только записи СВОЕЙ группы, а не чужой? Опишите пожалуйста подробно как раздать права доступа на эти группы?
И еще один вопрос: после раздачи прав на группы, необходимо ли перезаказывать лицензии для пользователей?
Terrasoft Sales 3.3.2.173
MsSQL 2005
Нравится
На данный момент логика Terrasoft не предусматривает независимую работу нескольких организаций (каковыми являются школы) с общей базой данных.
Дело в том, что на данный момент администратор Terrasoft - это еще и администратор базы данных, и он имеет полные права.
Для реализации Вашей задачи может быть применен следующий подход: у администраторов будут права на все, однако отображаемая в разделе Администрирование информация будет фильтроваться.
Алгоритм:
Для этого необходимо на OnPrepare грида (wnd_UsersGridArea), дерева групп (wnd_UsersGroups), списка пользователей (wnd_Users), а также окна добавления на деталь Группы (в функцию function IncludeUserInGroup перед ShowSelectDataWindow(,,,,,)) добавить проверку на принадлежность администратора к определенной группе и отображать записи исключительно для данной группы.
Как это сделать:
1. Получить идентификатор текущего пользователя: Connector.CurrentUser.ContactID
2. Определить идентификатор в ds_AdminUnit, отфильтровав по UserContactID
3. Определить идентификатор группы из tbl_UserInGroup, отфильтровав по UserID
4. Отфильтровать соответствующий датасет (дерева, грида либо представления) перед отображением.
Для того, чтобы Данный алгоритм корректно работал, необходимо исключить администраторов подгрупп из корневой группы "Все пользователи".
Приемлема ли подобная реализация?