Ниже приведён пример использования операции SetCustomOb для проверки прав доступа текущего пользователя на выполнение операции над объектом пользовательского класса. В запросе передаётся моникёр объекта пользовательского класса и операция, возможность выполнения которой необходимо проверить. Если выполнение операции разрешено, то в ответе будет возвращён моникёр объекта; если запрещено - будет возвращена ошибка с причиной отказа в доступе на выполнение операции. Соответствующая запись будет занесена в протокол доступа.
{ "SetCustomOb" : { "tCustomOb" : { "id" : "S1!M!S!T1" }, "tArg" : { "pattern" : { "obInst" : "true", "auditOp" : { "operationKey" : "1", "comment" : "Проверка прав доступа на выполнение операции: Import" } }, "meta" : "" } } }
{ "Fault" : { "faultcode" : "soapenv:Sender", "faultstring" : "Недостаточно прав для выполнения операции 'Import' с объектом 'Обработчик данных'(CUST_OBJ) у пользователя 'ADMIN'", "detail" : { "ExceptionDetail" : { "HelpLink" : { "@nil" : "1" }, "InnerException" : { "@nil" : "1" }, "Message" : "Недостаточно прав для выполнения операции 'Import' с объектом 'Обработчик данных'(CUST_OBJ) у пользователя 'ADMIN'", "StackTrace" : { "@nil" : "1" }, "Type" : "System.Exception" }, "Error" : { "Message" : "Недостаточно прав для выполнения операции 'Import' с объектом 'Обработчик данных'(CUST_OBJ) у пользователя 'ADMIN'", "Code" : "6374", "PiClass" : "CPiObjException", "PiState" : "AAAAAAEAAAAAAAAA5hgAAAsAAAByAAAAHQQ1BDQEPgRBBEIEMARCBD4ERwQ9BD4EIAA\/BEAEMAQyBCAANAQ7BE8EIAAyBEsEPwQ+BDsEPQQ1BD0EOARPBCAAPgQ\/BDUEQAQwBEYEOAQ4BCAAJwBJAG0AcABvAHIAdAAnACAAQQQgAD4EMQRKBDUEOgRCBD4EPAQgACcAHgQxBEAEMAQxBD4EQgRHBDgEOgQgADQEMAQ9BD0ESwRFBCcAKABDAFUAUwBUAF8ATwBCAEoAKQAgAEMEIAA\/BD4EOwRMBDcEPgQyBDAEQgQ1BDsETwQgACcAQQBEAE0ASQBOACcACwAAABMAAABTAG8AbQBcAFMAbwBtAE0AZQB0AGEAYgBhAHMAZQAuAGMAcABwAAAAAADQZAAACwAAAAAAAAALAAAAAAAAAAsAAAAAAAAAAAAAAAAAAAADAAAA" }, "Exception" : "Недостаточно прав для выполнения операции 'Import' с объектом 'Обработчик данных'(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;
}
}
См. также: