public bool HasRightsToExecute(XGetListDataRequest request, IXExecutionContextGuard context) { ListInfoWithAccessCheck stdListInfo = XListWithAccessCheckController.Instance.GetListInfo( request.MetaName, request.TypeName, context.Connection); ListInfoWithAccessCheck listInfo = (ListInfoWithAccessCheck)stdListInfo; ITUser user = (ITUser)XSecurityManager.Instance.GetCurrentUser(); if (user.PrivilegeSet.ContainsAll(listInfo.AccessSecurity.RequiredPrivileges)) { return(true); } return(false); }
public new XResponse Execute(XGetListDataRequest request, IXExecutionContext context) { // Результирующий текст XML: string resultXml = String.Empty; Guid FolderID; // Получим описание списка: XColumnInfo[] colInfo = XInterfaceObjectsHolder.Instance.GetListInfo( request.MetaName, request.TypeName, context.Connection).GetColumns(); string sIconTemplate = XInterfaceObjectsHolder.Instance.GetListInfo( request.MetaName, request.TypeName, context.Connection).IconTemplate; int iMaxRows = XInterfaceObjectsHolder.Instance.GetListInfo( request.MetaName, request.TypeName, context.Connection).MaxRows; bool bOffIcons = XInterfaceObjectsHolder.Instance.GetListInfo( request.MetaName, request.TypeName, context.Connection).OffIcons; if (!request.Params.Contains("FolderID")) { throw new ArgumentException("Не передан параметр 'FolderID'- идентификатор папки"); } FolderID = new Guid((string)request.Params["FolderID"]); XDataSource ds; if (((SecurityProvider)XSecurityManager.Instance.SecurityProvider).FolderPrivilegeManager.HasFolderPrivilege( (ITUser)XSecurityManager.Instance.GetCurrentUser(), FolderPrivileges.ManageIncidents, DomainObjectData.CreateStubLoaded(context.Connection, "Folder", FolderID), context.Connection) ) { // сотрудник обладает привилегией "Управление участниками инцидента" if (!request.Params.Contains("IncidentTypeID")) { throw new ArgumentException("Не передан параметр 'IncidentTypeID' - идентификатор типа инцидента"); } request.Params["IncidentTypeID"] = new Guid((string)request.Params["IncidentTypeID"]); ds = context.Connection.GetDataSource("AllStatesOfIncidentType"); ds.SubstituteNamedParams(request.Params, true); } else { // сотрудник НЕ обладает привилегией "Управление участниками инцидента" if (!request.Params.Contains("CurrentStateID")) { throw new ArgumentException("Не передан параметр 'CurrentStateID' - идентификатор текущего состояния инцидента"); } request.Params["CurrentStateID"] = new Guid((string)request.Params["CurrentStateID"]); if (request.Params.Contains("UserRoleID")) { request.Params["UserRoleID"] = new Guid((string)request.Params["UserRoleID"]); } ds = context.Connection.GetDataSource("AvailableStatesOfUserRole"); ds.SubstituteNamedParams(request.Params, true); } DataTable dtData = ds.ExecuteDataTable(); // Сформируем ответ и вернем его return(new XGetListDataResponse(colInfo, dtData, request.TypeName, iMaxRows, sIconTemplate, bOffIcons)); }