AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 14.02.2007, 11:12   #1  
Pavel Pustovalov ist offline
Pavel Pustovalov
Участник
 
65 / 11 (1) +
Registriert seit: 09.08.2004
Ort: Omsk
уровень доступа на форму
Всем привет.

У меня следующий вопрос. Как программно узнать уровень доступа, который пользователь имеет на форму или на таблицу на форме?
Alt 14.02.2007, 11:40   #2  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Zitat:
Zitat von Pavel Pustovalov Beitrag anzeigen
Всем привет.

У меня следующий вопрос. Как программно узнать уровень доступа, который пользователь имеет на форму или на таблицу на форме?
1.
У формы нет ограничений на доступ.
Ограничения на доступ есть у menuItem.

2.
У таблицы, поля, menuitem есть свойство securityKey

3.
Управлять правами можно при помощ класса SecurityKeySet
__________________
полезное на axForum, github, vk, coub.
Alt 14.02.2007, 11:43   #3  
kashperuk ist offline
kashperuk
Участник
Benutzerbild von kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4.361 / 2084 (78) +++++++++
Registriert seit: 30.05.2004
Ort: Atlanta, GA, USA
Доступ не на форму - а на контролы, или на пункт меню. и на таблицы.
Узнать можно пробовать, к примеру, так:
X++:
    SysDictTable    dictTable = new SysDictTable(tableNum(CustTable));
    ;
    print hasMenuItemAccess(menuItemDisplayStr(CustTable), MenuItemType::Display);
    print hasSecurityKeyAccess(dictTable.securityKeyId(), AccessType::View);
    pause;
Есть еще системный класс KERNDOC://Classes/SecurityKeySet

P.S. Упс. Маззи уже ответил
This post has been rated by: mazzy (5).
Alt 14.02.2007, 11:44   #4  
George Nordic ist offline
George Nordic
Модератор
Benutzerbild von George Nordic
Злыдни
 
4.480 / 1255 (50) ++++++++
Registriert seit: 17.12.2003
Ort: Moscow
Blog-Einträge: 9
Самый простой способ - ройте в сторону:
X++:
global::hasMenuItemSecurityAccess()
global::hasMenuItemAccess(
с Уважением,
Георгий
Alt 14.02.2007, 12:03   #5  
Pavel Pustovalov ist offline
Pavel Pustovalov
Участник
 
65 / 11 (1) +
Registriert seit: 09.08.2004
Ort: Omsk
Zitat:
Zitat von George Nordic Beitrag anzeigen
Самый простой способ - ройте в сторону:
X++:
global::hasMenuItemSecurityAccess()
Георгий, у меня нет в классе Global ткой функции. У меня Axapta 3.0 CIS SP3
Alt 14.02.2007, 11:45   #6  
Jony ist offline
Jony
Участник
 
99 / 22 (1) +++
Registriert seit: 25.06.2003
Ort: г. Барнаул
Например по ключу доступа на пункт меню для формы или на таблице:
метод из Global:
static boolean hasSecuritykeyAccess(SecurityKeyId SecurityKeyId, AccessType neededAccessLevel)
{
return new DictSecurityKey(SecurityKeyId).rights() >= neededAccessLevel;
}


new DictSecurityKey(SecurityKeyId).rights() - скажет какой уровень оступа есть у текущего пользователя для ключа SecurityKeyId
SecurityKeyId - можно получить если Вы знаете название ключа securityKeyNum(....);

ключ на таблице можно получить через класс dictTable
Alt 14.02.2007, 11:56   #7  
Pavel Pustovalov ist offline
Pavel Pustovalov
Участник
 
65 / 11 (1) +
Registriert seit: 09.08.2004
Ort: Omsk
Всем спасибо за советы. Про класс SecurityKeySet - не знал, покопаюсь.

Хотелось бы вот так: есть два menuItem с разными SecurityKey на одну и ту же форму с таблицей Table1. Насколько я понимаю права на доступ к таблице в этой форме будут как пересечение прав на SecurityKey таблицы и SecurityKey для MenuItem открывшего форму (поправьте если ошибаюсь).
Ну вот, в фоме скажем в методе init я хочу узнать какие же права есть у пользователя на эту таблицу. Аксапта же это определяет до открытия формы, т.е. делать то что она уже сделала не хочется, хочется просто получить результат ее вычислений.

Geändert von Pavel Pustovalov (14.02.2007 um 11:59 Uhr)
Alt 14.02.2007, 12:33   #8  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Zitat:
Zitat von Pavel Pustovalov Beitrag anzeigen
Ну вот, в фоме скажем в методе init я хочу узнать какие же права есть у пользователя на эту таблицу.
Боже! Что ж вы делаете, интересно? Это-ж закат солнца вручную.

Смотрите в форму SysUserSecurity или SysUserGroupSecurity
Эта форма показывает дерево с правами на каждый элемент меню, формы, отчета.

Можно спросить ради интереса? вы сделали какую-то универсальную штуку, которая автоматически создает колонки и показывает данные, а теперь думаете как к этой универсальной штуке прикрутить права доступа?
__________________
полезное на axForum, github, vk, coub.
Alt 14.02.2007, 12:51   #9  
Pavel Pustovalov ist offline
Pavel Pustovalov
Участник
 
65 / 11 (1) +
Registriert seit: 09.08.2004
Ort: Omsk
Zitat:
Zitat von mazzy Beitrag anzeigen
Боже! Что ж вы делаете, интересно? Это-ж закат солнца вручную.

Смотрите в форму SysUserSecurity или SysUserGroupSecurity
Эта форма показывает дерево с правами на каждый элемент меню, формы, отчета.

Можно спросить ради интереса? вы сделали какую-то универсальную штуку, которая автоматически создает колонки и показывает данные, а теперь думаете как к этой универсальной штуке прикрутить права доступа?
Ну и фантазия у Вас mazzy.
На самом деле все более прозаично.

При открытии формы я должен узнать имеет ли право пользователь удалять записи в таблицы или нет и в зависимости от результата делать соответствующие ограничения. На самом деле и MenuItem - один, но мне просто стало интересно что если их два или больше, то как узнать каким открылась форма. И опять же повторюсь права на таблицу на форме - пересечение прав на MenuItem и на таблицу. Самому строить пересечение мне не хочется, Аксапта же это делает сама, вот я и хотел как-то взять информацию об этом из формы.
Alt 14.02.2007, 13:23   #10  
oip ist offline
oip
Axapta
Лучший по профессии 2014
 
2.564 / 1416 (53) ++++++++
Registriert seit: 28.11.2005
Blog-Einträge: 1
Zitat:
Zitat von Pavel Pustovalov Beitrag anzeigen
На самом деле и MenuItem - один, но мне просто стало интересно что если их два или больше, то как узнать каким открылась форма.
element.args().menuItemName() вернет имя МенюАйтема, а element.args().menuItemType() - тип. Вроде как.
Alt 15.02.2007, 00:25   #11  
raz ist offline
raz
NavAx
Benutzerbild von raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1.499 / 1097 (39) ++++++++
Registriert seit: 22.07.2003
Ort: МО
Zitat:
Zitat von Pavel Pustovalov Beitrag anzeigen
На самом деле все более прозаично.

При открытии формы я должен узнать имеет ли право пользователь удалять записи в таблицы или нет и в зависимости от результата делать соответствующие ограничения. На самом деле и MenuItem - один, но мне просто стало интересно что если их два или больше, то как узнать каким открылась форма. И опять же повторюсь права на таблицу на форме - пересечение прав на MenuItem и на таблицу. Самому строить пересечение мне не хочется, Аксапта же это делает сама, вот я и хотел как-то взять информацию об этом из формы.
Можно сделать такие ограничения по другому:
1. создать ключ безопасности "Запретить то то и там то"
2. в нужном месте проверить какой доступ к этому ключу у пользователя и разрешить/запретить что надо

при этом можно тоньше ограничивать пользователя. например разрешить полный домтуп к заказам типа Заказ и только чтение к заказам типа Контракт.

Geändert von raz (15.02.2007 um 00:30 Uhr)
This post has been rated by: mazzy (5).
Alt 14.02.2007, 12:23   #12  
oip ist offline
oip
Axapta
Лучший по профессии 2014
 
2.564 / 1416 (53) ++++++++
Registriert seit: 28.11.2005
Blog-Einträge: 1
Там есть просто hasSecuritykeyAccess. Думаю Георгий просто написал по пямяти и немного ошибся.
Alt 14.02.2007, 12:27   #13  
Pavel Pustovalov ist offline
Pavel Pustovalov
Участник
 
65 / 11 (1) +
Registriert seit: 09.08.2004
Ort: Omsk
Zitat:
Zitat von oip Beitrag anzeigen
Там есть просто hasSecuritykeyAccess. Думаю Георгий просто написал по пямяти и немного ошибся.
Мне тоже так кажется. А еще предложения есть, по уточненному вопросу?
Alt 14.02.2007, 13:07   #14  
George Nordic ist offline
George Nordic
Модератор
Benutzerbild von George Nordic
Злыдни
 
4.480 / 1255 (50) ++++++++
Registriert seit: 17.12.2003
Ort: Moscow
Blog-Einträge: 9
Zitat:
Zitat von oip Beitrag anzeigen
Там есть просто hasSecuritykeyAccess. Думаю Георгий просто написал по пямяти и немного ошибся.
Не совсем. В 4ке - есть. А я по4ке как раз проверял.
Alt 14.02.2007, 12:26   #15  
Jony ist offline
Jony
Участник
 
99 / 22 (1) +++
Registriert seit: 25.06.2003
Ort: г. Барнаул
Ax30 Sp3 -
есть в Global
static public boolean hasMenuItemAccess(MenuName name, MenuItemType type)
Alt 14.02.2007, 13:10   #16  
glibs ist offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4.942 / 911 (40) +++++++
Registriert seit: 10.06.2002
Ort: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Права на таблицу проверяются через

Global::isTableUserEnabled()

Однако еще есть RLS. И на форме доступ к данным м.б. меньше, чем на таблицу вообще ( <трам-пам-пам>_ds.allowEdit() ). Более того, последняя фигня на форме может "менять окраску" как хамелеон, если начать прыгать по записям. Не говоря о том, что еще бывает .allowCreate() и .allowDelete().

В общем, с очень высокой вероятностью задача у вас поставлена неправильно.
__________________
С уважением,
glibs®
This post has been rated by: mazzy (5).
Alt 14.02.2007, 13:13   #17  
zinius ist offline
zinius
Участник
 
24 / 11 (1) +
Registriert seit: 26.01.2005
2Pavel Pustovalov
Дык ограничения на удаления записей задаются для групп пользователей, т.е. настройкой. Зачем отработку нужно ручками прописывать в форме?
Alt 14.02.2007, 13:53   #18  
Pavel Pustovalov ist offline
Pavel Pustovalov
Участник
 
65 / 11 (1) +
Registriert seit: 09.08.2004
Ort: Omsk
Zitat:
Zitat von zinius Beitrag anzeigen
2Pavel Pustovalov
Дык ограничения на удаления записей задаются для групп пользователей, т.е. настройкой. Зачем отработку нужно ручками прописывать в форме?
К сожалению правами не получается. Объясню тогда полностью ситуацию.
Если у пользователя есть права на создание записи в таблице на форме, то ему нужно запретить редактирование этой форме. Дело в том, что нужно в момент создания вызывать свою форму, т.е. либо по кнопке на панели инструментов, либо по нажатию Ctrl+N. А если у него есть полный доступ (на удаление), то форму не вызывать и делать обычные дествия при этом.
Чтобы он мог срабатывал метод create нужно чтобы были права на создание в таблице, но если есть на создание то есть и на редактирование. Вот и хотим отловить: если есть права на создание, а на удаление - нет, то запретить редактирование на форме. Примерно так. Может у кого другие соображения появятся.
Alt 14.02.2007, 13:15   #19  
oip ist offline
oip
Axapta
Лучший по профессии 2014
 
2.564 / 1416 (53) ++++++++
Registriert seit: 28.11.2005
Blog-Einträge: 1
Zitat:
Zitat von glibs Beitrag anzeigen
В общем, с очень высокой вероятностью задача у вас поставлена неправильно.
+1, как говорится. "Соответствующие ограничения" лучше делать обыкновенной настройкой прав или исходя из доступа к какому-то ключу. А не исходя из "имеет ли право пользователь удалять записи в таблицы или нет".

Geändert von oip (14.02.2007 um 13:45 Uhr) Grund: Сначала плохо выразился.
Alt 14.02.2007, 13:46   #20  
Pavel Pustovalov ist offline
Pavel Pustovalov
Участник
 
65 / 11 (1) +
Registriert seit: 09.08.2004
Ort: Omsk
Zitat:
Zitat von glibs Beitrag anzeigen
Права на таблицу проверяются через

Global::isTableUserEnabled()

Однако еще есть RLS. И на форме доступ к данным м.б. меньше, чем на таблицу вообще ( <трам-пам-пам>_ds.allowEdit() ). Более того, последняя фигня на форме может "менять окраску" как хамелеон, если начать прыгать по записям. Не говоря о том, что еще бывает .allowCreate() и .allowDelete().

В общем, с очень высокой вероятностью задача у вас поставлена неправильно.
Это я все понимаю. Дальнейшие настройки через форму и RLS меня не интересует. Интересует именно права доступа на таблицу на форме
Stichworte
faq, безопасность, права доступа

 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Организация доступа внешних веб-пользователей к DAX 4.0 alex55 DAX: Администрирование 1 07.06.2009 17:48
Расширение возможностей стандартных прав доступа Stainless DAX: Программирование 2 19.06.2008 10:36
Экспорт/Импорт прав доступа Anais DAX: Администрирование 28 11.11.2006 21:44
Смена доступа на таблицу в конкретной форме Perc DAX: Программирование 5 05.11.2006 23:08
Проблемы настройки прав доступа пользователям axot DAX: Администрирование 25 16.05.2002 10:47

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 07:16 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.