Скрытие пунктов в области навигации
Пункты в области навигации можно скрыть двумя способами:
- Они скрываются сами, если у пользователя нет никаких прав ни на какой объект входящих в этот пункт области навигации;
- С помощью специального атрибута Privilege в SiteMap’е.
Первый способ довольно не «стабильны» поскольку приходится учитывать много факторов при его задействовании. Поэтому сосредоточимся на втором. С ним тоже вроде все просто: нужно подобрать объекты/права, которые есть у пользователя и с помощью них и атрибута Privilege управлять доступом к отдельным SubArea. И если все SubArea будут скрыты в какой-либо области навигации, то и сам пункт в области навигации будет скрыт! Но данный способ тоже хранит в себе изъян – права на объекты постоянно выдаются/отбираются, поэтому зайдя в один прекрасный день в CRM Вы можете обнаружить что пользователь видит область навигации, которую не должен видеть!
Поэтому можно второй способ несколько унифицировать. А именно создать специальный объект, например, «new_sitemap», и выдавай какой-либо реальной Роли права на этот объект, управлять отображением пунктов областей навигации:
<Area Id="SFA" ResourceId="Area_Sales" Icon="/_imgs/sales_24x24.gif" DescriptionResourceId="Sales_Description"> <Group Id="SFA"> <SubArea Id="nav_leads" Entity="lead"> <Privilege Entity="new_sitemap" Privilege="Read" /> </SubArea> <SubArea Id="nav_oppts" Entity="opportunity"> <Privilege Entity="new_sitemap" Privilege="Read" /> </SubArea> <SubArea Id="nav_accts" Entity="account"> <Privilege Entity="new_sitemap" Privilege="Read" /> </SubArea> </Group> </Area>
Из этого отрывка следует, что если у Пользователя не будет полномочий на чтение объекта «new_sitemap», то он не увидит как ни одной из SubArea, так и всю Area «SFA»!