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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.07.2009, 13:02   #1  
Dekan is offline
Dekan
Участник
Аватар для Dekan
 
171 / 11 (1) +
Регистрация: 11.05.2009
Адрес: Оренбург
Определить права доступа пользователя
Доброго дня всем.
У меня есть вопрос, можно ли в процессе работы определить права доступа пользователя (может быть его роль) и из этого например открыть/зыкрыть доступ к вкладке на форме?
Старый 01.07.2009, 13:46   #2  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Dekan Посмотреть сообщение
Доброго дня всем.
У меня есть вопрос, можно ли в процессе работы определить права доступа пользователя (может быть его роль) и из этого например открыть/зыкрыть доступ к вкладке на форме?
Естественно можно. У себя для такого применяли признак наличия у пользователя роли.
Код для этого такой:

Код:
function UserHasRole(roleName)
{
	//get Current User Roles, oXml is an object
	var oXml = GetCurrentUserRoles();
	if(oXml != null)
	{
		//select the node text
		var roles = oXml.selectNodes("//BusinessEntity/q1:name");
		if(roles != null)
		{
			for( i = 0; i < roles.length; i++)
			{
				if(roles[i].text == roleName)
				{
     					//return true if user has this role
					return true;
				}
			}
		}
	}

	//otherwise return false
 	return false;
}

function GetCurrentUserRoles()
{
	var xml = "" +
	"<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
	"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" +
	GenerateAuthenticationHeader() +
	" <soap:Body>" +
	" <RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
	" <query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">" +
	" <q1:EntityName>role</q1:EntityName>" +
	" <q1:ColumnSet xsi:type=\"q1:ColumnSet\">" +
	" <q1:Attributes>" +
	" <q1:Attribute>name</q1:Attribute>" +
	" </q1:Attributes>" +
	" </q1:ColumnSet>" +
	" <q1:Distinct>false</q1:Distinct>" +
	" <q1:LinkEntities>" +
	" <q1:LinkEntity>" +
	" <q1:LinkFromAttributeName>roleid</q1:LinkFromAttributeName>" +
	" <q1:LinkFromEntityName>role</q1:LinkFromEntityName>" +
	" <q1:LinkToEntityName>systemuserroles</q1:LinkToEntityName>" +
	" <q1:LinkToAttributeName>roleid</q1:LinkToAttributeName>" +
	" <q1:JoinOperator>Inner</q1:JoinOperator>" +
	" <q1:LinkEntities>" +
	" <q1:LinkEntity>" +
	" <q1:LinkFromAttributeName>systemuserid</q1:LinkFromAttributeName>" +
	" <q1:LinkFromEntityName>systemuserroles</q1:LinkFromEntityName>" +
	" <q1:LinkToEntityName>systemuser</q1:LinkToEntityName>" +
	" <q1:LinkToAttributeName>systemuserid</q1:LinkToAttributeName>" +
	" <q1:JoinOperator>Inner</q1:JoinOperator>" +
	" <q1:LinkCriteria>" +
	" <q1:FilterOperator>And</q1:FilterOperator>" +
	" <q1:Conditions>" +
	" <q1:Condition>" +
	" <q1:AttributeName>systemuserid</q1:AttributeName>" +
	" <q1:Operator>EqualUserId</q1:Operator>" +
	" </q1:Condition>" +
	" </q1:Conditions>" +
	" </q1:LinkCriteria>" +
	" </q1:LinkEntity>" +
	" </q1:LinkEntities>" +
	" </q1:LinkEntity>" +
	" </q1:LinkEntities>" +
	" </query>" +
	" </RetrieveMultiple>" +
	" </soap:Body>" +
	"</soap:Envelope>";

	var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");

	xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
	xmlHttpRequest.setRequestHeader("SOAPAction"," http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
	xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
	xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
	xmlHttpRequest.send(xml);

	var resultXml = xmlHttpRequest.responseXML;
	return(resultXml);
}
и пример использования такой:

Код:
if (UserHasRole('System Administrator'))
{
//ваш код
}
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: Dekan (1).
Старый 01.07.2009, 13:56   #3  
Dekan is offline
Dekan
Участник
Аватар для Dekan
 
171 / 11 (1) +
Регистрация: 11.05.2009
Адрес: Оренбург
Супер, Спасибо!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
CRM 3.0 и AD - права пользователя на домен!?! Lemming Dynamics CRM: Администрирование 6 27.07.2012 06:54
права доступа к отдельным клиентам Paolo Dynamics CRM: Администрирование 31 04.02.2009 12:34
Ошибка после изменениями имени пользователя в AD sergeyjb Dynamics CRM: Администрирование 20 29.10.2008 18:27
Права доступа к новой сущности Олег Михайлов Dynamics CRM: Разработка 1 11.07.2008 11:30
Права пользователя. en Dynamics CRM: Функционал 7 11.01.2006 18:04

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:09.