Ниже приведён пример использования операции SetCustomOb для проверки прав доступа текущего пользователя на выполнение операции над объектом пользовательского класса. В запросе передаётся моникёр объекта пользовательского класса и операция, возможность выполнения которой необходимо проверить. Если выполнение операции разрешено, то в ответе будет возвращён моникёр объекта; если запрещено - будет возвращена ошибка с причиной отказа в доступе на выполнение операции. Соответствующая запись будет занесена в протокол доступа.
{
"SetCustomOb" :
{
"tCustomOb" :
{
"id" : "LDPFDGAHAHHCGOAEBAFLLHKHMOALEEDEMKDKCJAAKNELDHAE!M!S!TGHNHGJAHAHHCGOAENBPOBGJCGMEKKAFEILDEOPPCHPKFAHNO"
},
"tArg" :
{
"pattern" :
{
"obInst" : "true",
"parsOwnDefVals" : "true",
"auditOp" :
{
"operationKey" : "1",
"comment" : "Проверка прав доступа на выполнение операции: Импорт"
}
},
"meta" : ""
}
}
}
{
"Fault" :
{
"faultcode" : "soapenv:Sender",
"faultstring" : "Недостаточно прав для выполнения операции 'Неизвестная операция' с объектом 'Обработчик данных' (CUST_OBJ) у пользователя 'ADMIN'",
"detail" :
{
"ExceptionDetail" :
{
"HelpLink" :
{
"@nil" : "1"
},
"InnerException" :
{
"@nil" : "1"
},
"Message" : "Недостаточно прав для выполнения операции 'Неизвестная операция' с объектом 'Обработчик данных' (CUST_OBJ) у пользователя 'ADMIN'",
"StackTrace" :
{
"@nil" : "1"
},
"Type" : "System.Exception"
},
"Error" :
{
"Message" : "Недостаточно прав для выполнения операции 'Неизвестная операция' с объектом 'Обработчик данных' (CUST_OBJ) у пользователя 'ADMIN'",
"Code" : "6374",
"PiClass" : "CPiObjException",
"PiState" : "AAAAAAEAAAAAAAAA5hgAAAsAAACBAAAAHQQ1BDQEPgRBBEIEMARCBD4ERwQ9BD4EIAA\/BEAEMAQyBCAANAQ7BE8EIAAyBEsEPwQ+BDsEPQQ1BD0EOARPBCAAPgQ\/BDUEQAQwBEYEOAQ4BCAAJwAdBDUEOAQ3BDIENQRBBEIEPQQwBE8EIAA+BD8ENQRABDAERgQ4BE8EJwAgAEEEIAA+BDEESgQ1BDoEQgQ+BDwEIAAnAB4EMQRABDAEMQQ+BEIERwQ4BDoEIAA0BDAEPQQ9BEsERQQnACAAKABDAFUAUwBUAF8ATwBCAEoAKQAgAEMEIAA\/BD4EOwRMBDcEPgQyBDAEQgQ1BDsETwQgACcAQQBEAE0ASQBOACcACwAAACAAAAAuAC4AXABNAG8AZABcAEsAZQBTAG8AbQBcAFMAbwBtAFwAUwBvAG0ATQBlAHQAYQBiAGEAcwBlAC4AYwBwAHAAAAAAAFl0AAALAAAAAAAAAAsAAABeAAAAdgBvAGkAZAAgAF8AXwBjAGQAZQBjAGwAIABDAFMAbwBtAE0AZQB0AGEAYgBhAHMAZQA6ADoAQwBDAGgAZQBjAGsAQQBuAGQAQQB1AGQAaQB0ADoAOgBFAHIAcgBvAHIAKABjAG8AbgBzAHQAIABzAHQAcgB1AGMAdAAgAEMAUwBvAG0ATQBlAHQAYQBiAGEAcwBlADoAOgBDAEMAaABlAGMAawBSAGUAcwAgACYAKQAgAGMAbwBuAHMAdAALAAAAAAAAAAAAAAAAAAAAAwAAAA=="
},
"Exception" : "Недостаточно прав для выполнения операции 'Неизвестная операция' с объектом 'Обработчик данных' (CUST_OBJ) у пользователя 'ADMIN'"
}
}
}
public static bool SetCustomObCheckAndAudit(CustomObId moniker, CustomOperation operation)
{
var somClient = new SomPortTypeClient(); // Прокси-объект для выполнения операций
// Параметры выполнения операции
var tSet = new SetCustomOb()
{
tArg = new SetCustomObArg()
{
pattern = new CustomObMdPattern()
{
auditOp = new ObAuditOp()
{
operationKey = operation.k,
comment = "Проверка прав доступа на выполнение операции: " + operation.n
}
},
meta = new CustomObMd()
},
tCustomOb = moniker
};
// Проверка прав доступа на выполнение операции
try
{
var result = somClient.SetCustomOb(tSet);
return true;
}
catch
{
return false;
}
}
См. также: