28.12.2007, 09:50 | #1 |
Участник
|
Как программно изменить права доступа на объект ?
Например, есть поле в таблице (или MenuItem или еще что-нибудь), нужно у группы изменить права доступа на это поле (или другой объект) из X++ .
Не подскажете, каким методом это можно сделать? А то что-то я запутался в секурных классах. |
|
28.12.2007, 10:09 | #2 |
Участник
|
Может я не понял вопрос. Зачем для этого кодить?
Программно проверить включён ли ключ можно так. X++: DictSecurityKey dictSecurityKey; ; dictSecurityKey = new DictSecurityKey(id ); if(!dictSecurityKey || (.rights() != AccessType::NoAccess))) { ..... } |
|
|
За это сообщение автора поблагодарили: lev (1). |
28.12.2007, 10:16 | #3 |
Участник
|
Ключи тут не причем ! Я имею ввиду права доступа у полю таблицы или к пункту меню для определенной группы пользователей.
|
|
28.12.2007, 10:42 | #4 |
Участник
|
X++: secSet = SysSecurity::constructSecurityKeySet(); secSet.loadGroupRights(userGroup.id, ''); //Уровень доступа на MenuItem // secSet.access(_MenuItemId ,AccessType::NoAccess); //Уровень доступа на таблицу // secSet.tableAccess(_TableId,AccessType::NoAccess); //Сохранить xAccessRightsList::saveSecurityRights(secSet.packTouched(), userGroup.id, ''); |
|
|
За это сообщение автора поблагодарили: Logger (1). |
28.12.2007, 12:08 | #5 |
Участник
|
egorych - а зачем это могло вам понадобиться?
|
|
28.12.2007, 13:36 | #6 |
Участник
|
Например, делается новый пункт меню или кнопка, привязывается к существующему SecurityKey, и доступ автоматом получают все, у кого этот ключ "включен". Затем нужно пройти по всем группам и выключить кому не положено.
Хочу эту процедуру чуть-чуть упростить. |
|
28.12.2007, 14:41 | #7 |
Участник
|
Может поможет вот этот проект? Это установка прав, но идем не от группы к правам, а наоборот: выбираем пункт на который нужно установить права и переходим в список групп.
|
|
|
За это сообщение автора поблагодарили: Dron AKA andy (2), belugin (3), egorych (1), gl00mie (9), Umi (1), Egesihora (1), Maximin (2), Kabardian (3), Logger (5), denny (1), player (1), zemius (1), Alexanderrrr (1), andy.l (1), S.Kuskov (2), alex55 (2), sukhanchik (10), Just_smile (1), Proba (1), dn (2), ice321i (1), novic (1), vagon (1), Player1 (1), someOne (8), A_BAS (0), Xardas (1), mazzy (2), Ace of Database (4), PQRS (1), wedmak_dk (1), RVS (5), Товарищ ♂uatr (4). |
28.12.2007, 15:04 | #8 |
Участник
|
Спасибо, посмотрю.
Посмотрел, класс!!! То что я хотел делать! Дкмаю в полезное занести нужно Последний раз редактировалось egorych; 28.12.2007 в 16:52. |
|
25.08.2009, 14:41 | #9 |
Талантливый разгвоздяй
|
Цитата:
Application version: 4.0.2501.121 Localization version: Eastern Europe Занес в полезное ;--). egorych, пожалуйста, поделитесь опытом:
Последний раз редактировалось Kabardian; 25.08.2009 в 14:51. |
|
25.08.2009, 21:18 | #10 |
Участник
|
Цитата:
А как вы его писали ? Переложили дерево из стандартной формы прав доступа для групп на некое подобие реляционной структуры ? Известные косяки при использовании есть ? (уж очень стремно залезать в права самим) У вас на какой версии работало ? 3-ка ? |
|
29.08.2009, 20:39 | #11 |
Участник
|
Цитата:
А как вы его писали ?
Переложили дерево из стандартной формы прав доступа для групп на некое подобие реляционной структуры ? Последний раз редактировалось Raven Melancholic; 29.08.2009 в 20:41. |
|
|
За это сообщение автора поблагодарили: Logger (9), Kabardian (3). |
31.08.2009, 09:01 | #12 |
Участник
|
Активно пользуюсь данным инструментом на Ax3. Единственное замечание возникло.
Имеем форму, там кнопка, без ключа и без menuitem - простая кнопка. Стандартной формой "Права групп пользователей" без проблем можно выставить доступ NoAccess для нее, а вот эта не позволяет - пишет что-то типа "Для объекта доступен только режим View". За точность не ручаюсь, но смысл этот. А в остальном - посто класс! ps А на Ax 2009 не делали? А то мы 4 пропускаем, планируем сразу на 5. |
|
|
За это сообщение автора поблагодарили: Raven Melancholic (5), Kabardian (3). |
01.09.2009, 21:29 | #13 |
Талантливый разгвоздяй
|
У меня на AX4.0 SP2 не повторилось. Кажется, я понимаю о чем идет речь. Эта ошибка появляется, при попытке назначить уровень доступа выше максимального. Например, максимальный уровень доступа у элемента View, при поытке указать уровень Edit, будет выдано такое сообщение об ошибке. В стандартной форме при таких же условиях автоматически устанавливается максимально возможный уровень доступа без лишних предупреждений .
|
|
02.09.2009, 09:39 | #14 |
Участник
|
|
|
02.09.2009, 15:30 | #15 |
Талантливый разгвоздяй
|
У меня убирается без проблем.
Как я проверял:
Скорее всего, этот баг наблюдается при особых условиях, т. е. отсутвие Security Key -- это всего лишь одно из необходымых условий его воспроизведения. |
|
02.09.2009, 18:14 | #16 |
Участник
|
Цитата:
Сообщение от egorych
Имеем форму, там кнопка, без ключа и без menuitem - простая кнопка. Стандартной формой "Права групп пользователей" без проблем можно выставить доступ NoAccess для нее, а вот эта не позволяет - пишет что-то типа "Для объекта доступен только режим View". За точность не ручаюсь, но смысл этот.
X++: case SysSecurityType::FormButton: X++: minAccess = sysSecurityFormSetup.getNeededAccessLevel(tmpSecurityTable.controlId); |
|
02.09.2009, 18:16 | #17 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: Pustik (3), Kabardian (3). |
02.09.2009, 19:55 | #18 |
Талантливый разгвоздяй
|
|
|
01.11.2011, 18:39 | #19 |
Участник
|
|
|
02.12.2011, 22:08 | #20 |
Талантливый разгвоздяй
|
Просто поделюсь опытом, может кому-нибудь пригодится.
Дано:
Задача:
Выполняется очееень долго (~4-9 часов) и не всегда завершается успешно. Оптимизировать времени не было, поэтому и хотфикс не выкладываю, а лишь делюсь опытом :-). |
|
|
За это сообщение автора поблагодарили: Pustik (3). |