Как сделать доступным "Журнал изменений БД" для конкретной группы пользователей

Раздел [Журнал изменений БД] доступен только для пользователя с правами системного администратора, если же Вам необходимо отображать данный раздел для всех пользователей, то Вам необходимо в TSAdmin.exe найти скрипт scr_Main и закомментировать строку, как показано ниже.

//amiToolsDatabaseLog.IsVisible = IsAdmin;

После этого данный раздел будет доступен всем пользователям.

Чтобы для конкретной группы пользователей разрешить доступ к журналу изменений, в скрипте scr_Main закомментируйте строку:
//amiToolsDatabaseLog.IsVisible = IsAdmin;

В скрипте scr_Main реализуйте следующий код:
 
function IsUserInGroupExists(UserID, GroupName) {
         var Dataset = GetSingleItemByCode(UserInGroupDatasetUSI);
         ApplyDatasetFilter(Dataset, 'UserID', UserID, true);
         Dataset.Open();
         try {
                   while (!Dataset.IsEOF) {
                            if (Dataset.Values('GroupName') == GroupName) {
                                      return true;
                            }
                            Dataset.GotoNext();
                   }
         } finally {
                   Dataset.Close();
         }
         return false;
}

amiToolsDatabaseLog.IsVisible = IsAdmin || IsUserInGroupExists(Connector.CurrentUser.ID, 'Менеджеры');;

Теперь, если Ваш пользователь входит в группу "Менеджеры" или администратор, сможет работать с данным разделом.
Вам необходимо только указать название группы, для которой Вы хотите отображать данный раздел.

Нравится

Поделиться

1 комментарий

Есть более изящное решение этой задачи.
В scr_Access (по крайней мере, в 3.3.0) есть функция GetIsCurrentUserHas(RecordAdminUnitID), которая определяет вхождение искомого объекта системы (например, группы пользователей) в список объектов системы, с которыми связан текущий пользователь системы.
Входящий параметр - ID объекта системы (группы пользователей) из tbl_AdminUnit. Функция возвращает TRUE или FALSE.
Таким образом, вхождение пользователя в группу можно определить всего двумя строками:

var UserGroup = /* ID группы пользователей из tbl_AdminUnit*/;
var CurrentUserInGroup = GetIsCurrentUserHas(UserGroup);
Показать все комментарии