AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Администрирование
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.06.2007, 17:00   #1  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
? Как узнать у каких групп есть права на MenuItem ?
Собственно нужно по конкретному MenuItem узнать, у каких групп есть права на него? Как это можно сделать?
Старый 18.06.2007, 17:17   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
X++:
static void Test_AccessibleForWho(Args _args)
{
    SecurityKeySet secSet;
    UserGroupInfo userGroup;
    DomainInfo domain;
    str items;
    container menuItems = [
        [menuItemDisplayStr(UKS_IV_Load), AccessRecordType::MenuItemDisplay]
    ];
    str accessibleMenuItems()
    {
        int i;
        MenuItemName name;
        AccessRecordType type;
        str ret;
    ;
        for (i=1; i<=conLen(menuItems); i++)
        {
            [name, type] = conPeek(menuItems, i);
            if (secSet.menuItemAccess(name,  type))
            {
                if (ret)
                    ret += ', ';
                ret += SysDictMenu::newMenuItem(name,
                    (type == AccessRecordType::MenuItemAction) ?
                        MenuItemType::Action : MenuItemType::Display
                ).label()+strFmt(', %1', secSet.menuItemAccess(name,  type));
            }
        }
        return ret;
    }
;
    while select userGroup
    {
        while select domain
        {
            secSet  = SysSecurity::constructSecurityKeySet();
            secSet.loadGroupRights(userGroup.id, domain.Id);
            items = accessibleMenuItems();
            if (items)
            {
                info(strFmt('%1;%2: %3',  userGroup.id, domain.Id, items));
            }
        }
    }
}
За это сообщение автора поблагодарили: SHiSHok (1), Gustav (5), Kabardian (3).
Старый 18.06.2007, 17:20   #3  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
До кучи еще SC
X++:
static void Test_AccessibleSCForWho(Args _args)
{
    SecurityKeySet secSet;
    UserGroupInfo userGroup;
    DomainInfo domain;
    str items;
;
    while select userGroup
    {
        while select domain
        {
            secSet  = SysSecurity::constructSecurityKeySet();
            secSet.loadGroupRights(userGroup.id, domain.Id);

            if (secSet.access(securityKeyNum(Admin)) >= AccessType::View)
            {
                info(strFmt('%1;%2: %3',  userGroup.id, domain.Id, items));
            }
        }
    }
}
Старый 18.06.2007, 18:08   #4  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от belugin Посмотреть сообщение
X++:
    while select userGroup
    {
        while select domain
        {
            secSet  = SysSecurity::constructSecurityKeySet();
            secSet.loadGroupRights(userGroup.id, domain.Id);
            items = accessibleMenuItems();
            if (items)
            {
                info(strFmt('%1;%2: %3',  userGroup.id, domain.Id, items));
            }
        }
    }
}
Хорошо. Только я бы еще домены проверил. У меня их, например, нет. Т.е. как-то так наскоряк модифицировать:
X++:
    while select userGroup
    {
        if ((select count(RecId) from DomainInfo).RecId)
        {
            while select domain
            {
                secSet  = SysSecurity::constructSecurityKeySet();
                secSet.loadGroupRights(userGroup.id, domain.Id);
                items = accessibleMenuItems();
                if (items)
                {
                    info(strFmt('%1;%2: %3',  userGroup.id, domain.Id, items));
                }
            }
        }
        else // NO DOMAINS
        {
            secSet  = SysSecurity::constructSecurityKeySet();
            secSet.loadGroupRights(userGroup.id, '');
            items = accessibleMenuItems();
            if (items)
            {
                info(strFmt('%1;%2: %3',  userGroup.id, domain.Id, items));
            }
        }
    }
За это сообщение автора поблагодарили: Kabardian (3).
Старый 18.06.2007, 18:13   #5  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Благодарствую премного!
Старый 18.06.2007, 18:13   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Ага. Вообще в тулзу надо бы оформить...
Старый 19.06.2007, 11:14   #7  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Получается, что это работает, если на MenuItem навешен SecurityKey ?
А если он пустой, то показывает, что доступно всем - хотя в меню у всех выключено
Старый 19.06.2007, 11:20   #8  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Каким образом выключено в меню?
Старый 19.06.2007, 11:39   #9  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Права групп пользователей - в выпадающем списке выбираем "Главное меню", ищем нужный пункт и жмем "нет доступа". или закрываем какую-то ветку, например "отчеты" - закрываются и все что ниже в меню
Старый 19.06.2007, 11:44   #10  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,286 / 3494 (123) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
2egorych:
не... для MenuItem см здесь

а для SecurityKey (независимо от MenuItem) см здесь
__________________
Возможно сделать все. Вопрос времени
Старый 19.06.2007, 12:13   #11  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
2sukhanchik - я так и пробовал - 1 вариант показывает правильно если есть SK - если не привязан ни к какому ключу - показывает доступ для всех групп.
Старый 19.06.2007, 12:23   #12  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
А в случае такого запрещения можно вызвать этот MenuItem из другого меню или по кнопке?
Старый 19.06.2007, 12:29   #13  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,286 / 3494 (123) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
2belugin: Думаю, что нет - т.к. в этом случае (когда MenuItem без SK) в AccessRightList должна появиться запись о конкретном MenuItem - а значит на него не должен быть доступ
__________________
Возможно сделать все. Вопрос времени
Старый 19.06.2007, 12:56   #14  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Правильно - item выключается во всех менюшках, куда был вставлен.
Теги
как найти, как правильно, права доступа

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
права доступа Himan DAX: Функционал 9 24.09.2010 16:52
Права группы пользователей Apollon33 DAX: Администрирование 8 17.01.2008 14:16
Как Узнать из класса - Текущую выбранную запись в таблице djoker DAX: Программирование 1 01.12.2004 07:36
Настройка форм для групп пользователей Роман Кошелев DAX: Функционал 14 05.08.2002 16:32
Можно ли узнать ширину колонки в Grid? Maxim Gorbunov DAX: Программирование 1 05.07.2002 18:52

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 07:01.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.