|
06.06.2011, 10:43 | #1 |
Участник
|
Вопрос по правам.
Приветствую! Пользуюсь MS DAX 5.0.1500.3761 Rollup6, SQL Server 2008 R2.
Прошу помочь разобраться с вопросами. Первый. Например, по адресу /Расчеты с клиентами/Расчеты с клиентами/Сведения о клиенте - я добавил кнопку на форму, которую не желательно видеть пользователям. И параллельно есть огромное количество групп пользователей, в которых в большинстве нужно её скрыть(кнопку). Вручную - довольно длительный процесс.. Можно ли массово убрать доступ к данной кнопке/объекту (таблицы системные)? (Через SQL смотрел, но хочется через DAX) Второй. На сколько я знаю в АХ помимо админов-разработчиков-консультантов, есть супер-администратор (далее Admin), который просто так нельзя убрать даже просто админом. Как присваивается данный статус? Возможно ли его изменить на другого пользователя? Заранее спасибо.
__________________
С уважением, Алексей. |
|
06.06.2011, 11:07 | #2 |
Участник
|
Первый вопрос. Можно массово. В контейнере groups перечислите группы, для которых нужно закрыть доступ на menuItem. Предполагается что кнопка это menuItem. Вот Job:
X++: static void setRights(Args _args) { SecurityKeySet secSet; UserGroupInfo userGroup; DomainInfo domain; AccessType currentAccessType; MenuItemName name = menuItemDisplayStr(InventTable); AccessRecordType type = AccessRecordType::MenuItemDisplay; container groups = ['group1, group2', 'group3']; ; while select userGroup where userGroup.Id != 'Admin' { if (confind(groups, userGroup.Id) != 0) { while select domain { secSet = SysSecurity::constructSecurityKeySet(); secSet.loadGroupRights(userGroup.id, domain.Id); currentAccessType = secSet.menuItemAccess(name, type); if (currentAccessType != AccessType::NoAccess) { secSet.menuItemAccess(name, type, currentAccessType); xAccessRightsList::saveSecurityRights(secSet.pack(), userGroup.Id, domain.Id); } } } } } |
|
|
За это сообщение автора поблагодарили: axalex (1). |
06.06.2011, 11:48 | #3 |
Участник
|
Цитата:
Цитата:
Второй вопрос не понял.
При попытке удалить\отключить - вываливается ошибка "Невозможно произвести замену Admin". Вскрываем ошибку - вылетает код (для понятности): X++: //Класс UserInfoHelp static server boolean validateAdmin(UserInfo _userInfo) { #admin UserGroupList _userGroupList; ; setprefix("@SYS29011"); if (_userInfo.Id == #AdminUser) { error(strfmt("@SYS29012", _userInfo.Id)); return false; } select firstonly RecId from _userGroupList where _userGroupList.UserId == _userInfo.Id && _userGroupList.GroupId == #AdminUserGroup; if (_userGroupList) { select firstonly RecId from _userGroupList where _userGroupList.UserId != _userInfo.Id && _userGroupList.GroupId == #AdminUserGroup; if (!_userGroupList) { error(strfmt("@SYS29013", _userInfo.Id)); return false; } } return true; }
__________________
С уважением, Алексей. |
|
06.06.2011, 11:52 | #4 |
Участник
|
По первому вопросу: можно создать SecurityKey, указать в свойствах кнопки и выдавать только нужным группам пользователей.
|
|
06.06.2011, 12:01 | #5 |
Участник
|
Цитата:
1. Потом черт ногу сломит в этих security-ключах. 2. Фиг знает где его в дереве искать. И только один "гуру-человек" знает где все это находится. 3. Сталкивался с тем, что SK могут работать только с глубиной иерархии не больше 2-х. Подробностей не помню, но что-то было связано с тем, что на каких-то уровнях иерархии он перестает показывать MenuItems, которые привязаны к этому Security Key. |
|
|
За это сообщение автора поблагодарили: someOne (2). |
06.06.2011, 12:09 | #6 |
Участник
|
Если не ошибаюсь, то уже в 5.0 это было исправлено.
__________________
С уважением, Алексей. Последний раз редактировалось axalex; 06.06.2011 в 12:11. |
|
06.06.2011, 12:14 | #7 |
Участник
|
Цитата:
Сообщение от _scorp_
Не нужно так делать. Встречал такие подходы.
1. Потом черт ногу сломит в этих security-ключах. 2. Фиг знает где его в дереве искать. И только один "гуру-человек" знает где все это находится. 3. Сталкивался с тем, что SK могут работать только с глубиной иерархии не больше 2-х. Подробностей не помню, но что-то было связано с тем, что на каких-то уровнях иерархии он перестает показывать MenuItems, которые привязаны к этому Security Key. 2. Куда добавим, там и смотреть, можно без указания родителя (может это влечет какие-то минусы, не знаю). В Самой кнопке он будет прописан - это и наглядно и всегда посмотреть можно наличие прав оперативно. 3. Вкладывать неглубоко |
|
06.06.2011, 12:34 | #8 |
Участник
|
Цитата:
Сообщение от mnt_dx
1. Назвать понятным образом. Для меня лично джоб написать сложнее. Джобы-то и контейнеры по-сложнее.
2. Куда добавим, там и смотреть, можно без указания родителя (может это влечет какие-то минусы, не знаю). В Самой кнопке он будет прописан - это и наглядно и всегда посмотреть можно наличие прав оперативно. 3. Вкладывать неглубоко |
|
06.06.2011, 11:55 | #9 |
Участник
|
Не нужно удалять этого пользователя. Это системная учетная запись предоставляется пользователю, который устанавливал AX. Удалить или отключить эту учетную запись нельзя - этим гарантируется то, что всегда есть учетная запись админа. А то ведь в настройках прав можно было бы случайно доиграться так, что не осталось бы администратора в системе.
Заменить пользователя, которому принадлежит учетная запись admin можно. Поменяйте ему SID (поищите на форуме как это делать если не знаете). |
|
06.06.2011, 12:50 | #10 |
Участник
|
Если без джобов, какой ещё вариант с небольшим количеством действий?
|
|
06.06.2011, 12:59 | #11 |
Участник
|
На вкус и цвет товарищей нет ;-)
__________________
С уважением, Алексей. |
|
06.06.2011, 13:22 | #12 |
Участник
|
Цитата:
Для них можно определить один из ключей безопасности соответствующего модуля, и настроить права требуемым группам пользователей штатными средствами без всяких извращений... |
|
06.06.2011, 13:34 | #13 |
Участник
|
Я думаю, проблема в количестве групп возникает только при подходе настройки от максимальных прав к минимальным, т.е. у автора изначально даны права на securitykey, соответственно все новые объекты автоматом получают доступ.
Если же на сам ключ доступа нет, то и на новую кнопку нужно будет давать, а не убирать доступ.
__________________
Ivanhoe as is.. |
|
|
За это сообщение автора поблагодарили: someOne (2), axalex (1). |
06.06.2011, 13:43 | #14 |
Участник
|
Цитата:
Сообщение от Ivanhoe
Я думаю, проблема в количестве групп возникает только при подходе настройки от максимальных прав к минимальным, т.е. у автора изначально даны права на securitykey, соответственно все новые объекты автоматом получают доступ.
Если же на сам ключ доступа нет, то и на новую кнопку нужно будет давать, а не убирать доступ. Из сообщения автора не совсем ясно это описано... Если проблема в том, в группах пользователей открыты права на securitykey, то с этим, конечно, не просто при настройки прав на новые объекты. Лучшим решением, ИХМО, было бы снять доступ с securitykey там где это возможно. Обсуждалось уже ранее. |
|