domingo, 23 de septiembre de 2007

Como saber si un usuario pertenece a un rol específico en CRM

Con esta validación sabemos si el usuario que esta actualmente logeado en CRM pertenece a un rol en específico, mas abajo vienen todas las funciones que utilice y que ademas por separado las podemos utilizar par otras cosas, como por ejemplo, saber el GUID o Todos los roles a los que pertenece, den una leída espero les sea muy útil.

if(currentUserHasRole('GICSA Administrador Cuentas por Cobrar')){
alert("Pertenece a GICSA Administrador Cuentas por Cobrar");
}else{
alert("No pertenece GICSA Administrador Cuentas por Cobrar");
}

Función para obtener el GUID del Usuario actual

function getUserId(){
try {
var command = new RemoteCommand("SystemUser", "WhoAmI", "/MSCRMServices/"); var oResult = command.Execute();
if (oResult.Success) {
return oResult.ReturnValue.UserId;
}
}
catch(e) {
alert("Error while retrieving userid.");
}
return null;}

Función que obtiene los roles del usuario actual

function getUserRoles(userId){
try {
var command = new RemoteCommand("UserManager", "GetUserRoles"); command.SetParameter("userIds", "" + userId + "");
var oResult = command.Execute();
if (oResult.Success) {
return oResult.ReturnValue;
}
}
catch(e)
{
alert("Error while retrieving roles.");
}
return null;}

Función que busca si el usuario UserId tiene un rol específico

function userHasRole(userId, roleName){
result = getUserRoles(userId);
if (result != null) {
var oXml = new ActiveXObject("Microsoft.XMLDOM");
oXml.resolveExternals = false;
oXml.async = false;
oXml.loadXML(result);
roleNode = oXml.selectSingleNode("/roles/role[name='" + roleName + "']");
if (roleNode != null) {
if (roleNode.selectSingleNode("roleid[@checked='true']") != null)
return true;
}
}
return false;
}

Función para saber si un usuario actual tiene un rol específico
- devuelve true,false

function currentUserHasRole(roleName){
var userId = getUserId();
return userHasRole(userId, roleName);
}

Saludos

No hay comentarios: