Публикация
Добавить права доступа записям раздела определенной группе.
28 мая 2012 18:53
Добрый день!
Предлагаю Вам к ознакомлению реализацию задачи добавления полных(или на чтение) прав доступа определенной группе пользователей на все записи раздела, у которых права доступа для данной группы отсутствуют.
// на примере раздела "Контакты" и группы "Все пользователи".
Алгоритм:
1. Запустите TS Admin и откройте сервис wnd_ContactGridArea. В блок frmButtons добавьте новый Button, свойство Caption установите, к примеру, «Добавить права»:
2. На вкладке события, определите событие OnClick для созданной кнопки, и вставьте в функцию – обработчик следующий код:
function ButtonOnClick(Control) {
var Dataset = Services.GetNewItemByUSI('ds_Contact');
Dataset.Open();
while(!Dataset.IsEOF)
{
var ParentItemID = Dataset.Values('ID');
var AdminUnitIDs = '{97490F89-2943-480D-9AFE-B1C95DE00010}';
var RightsDataset = GetItemRightDataset('tbl_ContactRight');
var SetFullAccess = true; //false
RightsDataset.Close();
ApplyDatasetFilter(RightsDataset, 'RecordID', ParentItemID, true);
RightsDataset.Open();
var AdminUnitID = AdminUnitIDs;
var RecordIsFound = RightsDataset.Locate('AdminUnitID', AdminUnitID);
if (RecordIsFound) {
var ID = RightsDataset.Values('ID');
RightsDataset.Edit();
RightsDataset.ValAsBool('CanRead') = true;
if (SetFullAccess == true) {
RightsDataset.ValAsBool('CanWrite') = true;
RightsDataset.ValAsBool('CanDelete') = true;
}
} else {
var ID = Connector.GenGUID();
RightsDataset.Append();
RightsDataset.ValAsGUID('ID') = ID;
RightsDataset.ValAsGUID('RecordID') = ParentItemID;
RightsDataset.ValAsGUID('AdminUnitID') =AdminUnitID;
RightsDataset.ValAsBool('CanRead') = true;
if (SetFullAccess == true) {
RightsDataset.ValAsBool('CanWrite') = true;
RightsDataset.ValAsBool('CanDelete') = true;
}
}
RightsDataset.Post();
Dataset.GotoNext();
}
Dataset.Close();
}
var Dataset = Services.GetNewItemByUSI('ds_Contact');
Dataset.Open();
while(!Dataset.IsEOF)
{
var ParentItemID = Dataset.Values('ID');
var AdminUnitIDs = '{97490F89-2943-480D-9AFE-B1C95DE00010}';
var RightsDataset = GetItemRightDataset('tbl_ContactRight');
var SetFullAccess = true; //false
RightsDataset.Close();
ApplyDatasetFilter(RightsDataset, 'RecordID', ParentItemID, true);
RightsDataset.Open();
var AdminUnitID = AdminUnitIDs;
var RecordIsFound = RightsDataset.Locate('AdminUnitID', AdminUnitID);
if (RecordIsFound) {
var ID = RightsDataset.Values('ID');
RightsDataset.Edit();
RightsDataset.ValAsBool('CanRead') = true;
if (SetFullAccess == true) {
RightsDataset.ValAsBool('CanWrite') = true;
RightsDataset.ValAsBool('CanDelete') = true;
}
} else {
var ID = Connector.GenGUID();
RightsDataset.Append();
RightsDataset.ValAsGUID('ID') = ID;
RightsDataset.ValAsGUID('RecordID') = ParentItemID;
RightsDataset.ValAsGUID('AdminUnitID') =AdminUnitID;
RightsDataset.ValAsBool('CanRead') = true;
if (SetFullAccess == true) {
RightsDataset.ValAsBool('CanWrite') = true;
RightsDataset.ValAsBool('CanDelete') = true;
}
}
RightsDataset.Post();
Dataset.GotoNext();
}
Dataset.Close();
}
3. Вместо var AdminUnitIDs = '{97490F89-2943-480D-9AFE-B1C95DE00010}'; подставьте ID группы все пользователи:
4. Сохраните изменения и протестируйте функционал.
Приятной работы с Terrasoft!
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать