本文整理汇总了C#中Report.IsAuthorized方法的典型用法代码示例。如果您正苦于以下问题:C# Report.IsAuthorized方法的具体用法?C# Report.IsAuthorized怎么用?C# Report.IsAuthorized使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Report
的用法示例。
在下文中一共展示了Report.IsAuthorized方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: IsAuthorizedForAllReportComponents
/// <summary>
/// Determines whether [is authorized for all report components] [the specified report].
/// </summary>
/// <param name="reportAction">The report action.</param>
/// <param name="report">The report.</param>
/// <param name="authorizationMessage">The authorization message.</param>
/// <returns></returns>
private bool IsAuthorizedForAllReportComponents( string reportAction, Report report, out string authorizationMessage )
{
bool isAuthorized = true;
authorizationMessage = string.Empty;
if ( !report.IsAuthorized( reportAction, CurrentPerson ) )
{
isAuthorized = false;
authorizationMessage = EditModeMessage.ReadOnlyEditActionNotAllowed( Report.FriendlyTypeName );
}
if ( report.ReportFields != null )
{
foreach ( var reportField in report.ReportFields )
{
if ( reportField.ReportFieldType == ReportFieldType.DataSelectComponent )
{
string dataSelectComponentTypeName = EntityTypeCache.Read( reportField.DataSelectComponentEntityTypeId ?? 0 ).GetEntityType().FullName;
var dataSelectComponent = Rock.Reporting.DataSelectContainer.GetComponent( dataSelectComponentTypeName );
if ( dataSelectComponent != null )
{
if ( !dataSelectComponent.IsAuthorized( Authorization.VIEW, this.CurrentPerson ) )
{
isAuthorized = false;
authorizationMessage = "INFO: This Reports contains a data selection component that you do not have access to view.";
break;
}
}
}
}
}
if ( report.DataView != null )
{
if ( !report.DataView.IsAuthorized( Authorization.VIEW, this.CurrentPerson ) )
{
isAuthorized = false;
authorizationMessage = "INFO: This Reports uses a data view that you do not have access to view.";
}
else
{
if ( report.DataView.DataViewFilter != null && !report.DataView.DataViewFilter.IsAuthorized( Authorization.VIEW, CurrentPerson ) )
{
isAuthorized = false;
authorizationMessage = "INFO: The Data View for this report contains a filter that you do not have access to view.";
}
if ( report.DataView.TransformEntityTypeId != null )
{
string dataTransformationComponentTypeName = EntityTypeCache.Read( report.DataView.TransformEntityTypeId ?? 0 ).GetEntityType().FullName;
var dataTransformationComponent = Rock.Reporting.DataTransformContainer.GetComponent( dataTransformationComponentTypeName );
if ( dataTransformationComponent != null )
{
if ( !dataTransformationComponent.IsAuthorized( Authorization.VIEW, this.CurrentPerson ) )
{
isAuthorized = false;
authorizationMessage = "INFO: The Data View for this report contains a data transformation that you do not have access to view.";
}
}
}
}
}
return isAuthorized;
}
示例2: BindGrid
/// <summary>
/// Shows the preview.
/// </summary>
/// <param name="entityTypeId">The entity type id.</param>
/// <param name="filter">The filter.</param>
private void BindGrid( Report report )
{
if ( report != null )
{
var errors = new List<string>();
if ( !report.EntityTypeId.HasValue )
{
gReport.Visible = false;
return;
}
var rockContext = new RockContext();
if ( !report.IsAuthorized( Authorization.VIEW, this.CurrentPerson ) )
{
gReport.Visible = false;
return;
}
Type entityType = EntityTypeCache.Read( report.EntityTypeId.Value, rockContext ).GetEntityType();
bool isPersonDataSet = report.EntityTypeId == EntityTypeCache.Read( typeof( Rock.Model.Person ), true, rockContext ).Id;
if ( isPersonDataSet )
{
gReport.PersonIdField = "Id";
gReport.DataKeyNames = new string[] { "Id" };
}
else
{
gReport.PersonIdField = null;
}
if ( report.EntityTypeId.HasValue )
{
gReport.RowItemText = EntityTypeCache.Read( report.EntityTypeId.Value, rockContext ).FriendlyName;
}
List<EntityField> entityFields = Rock.Reporting.EntityHelper.GetEntityFields( entityType );
var selectedEntityFields = new Dictionary<int, EntityField>();
var selectedAttributes = new Dictionary<int, AttributeCache>();
var selectedComponents = new Dictionary<int, ReportField>();
// if there is a selectField, keep it to preserve which items are checked
var selectField = gReport.Columns.OfType<SelectField>().FirstOrDefault();
gReport.Columns.Clear();
int columnIndex = 0;
if ( !string.IsNullOrWhiteSpace( gReport.PersonIdField ) )
{
// if we already had a selectField, use it (to preserve checkbox state)
gReport.Columns.Add( selectField ?? new SelectField() );
columnIndex++;
}
var reportFieldSortExpressions = new Dictionary<Guid, string>();
foreach ( var reportField in report.ReportFields.OrderBy( a => a.ColumnOrder ) )
{
columnIndex++;
if ( reportField.ReportFieldType == ReportFieldType.Property )
{
var entityField = entityFields.FirstOrDefault( a => a.Name == reportField.Selection );
if ( entityField != null )
{
selectedEntityFields.Add( columnIndex, entityField );
BoundField boundField;
if ( entityField.FieldType.Guid.Equals( Rock.SystemGuid.FieldType.DEFINED_VALUE.AsGuid() ) )
{
boundField = new DefinedValueField();
}
else
{
boundField = Grid.GetGridField( entityField.PropertyType );
}
boundField.DataField = string.Format( "Entity_{0}_{1}", entityField.Name, columnIndex );
boundField.HeaderText = string.IsNullOrWhiteSpace( reportField.ColumnHeaderText ) ? entityField.Title : reportField.ColumnHeaderText;
boundField.SortExpression = boundField.DataField;
reportFieldSortExpressions.AddOrReplace( reportField.Guid, boundField.SortExpression );
boundField.Visible = reportField.ShowInGrid;
gReport.Columns.Add( boundField );
}
}
else if ( reportField.ReportFieldType == ReportFieldType.Attribute )
{
Guid? attributeGuid = reportField.Selection.AsGuidOrNull();
if ( attributeGuid.HasValue )
{
var attribute = AttributeCache.Read( attributeGuid.Value, rockContext );
if ( attribute != null )
{
//.........这里部分代码省略.........
示例3: BindGrid
/// <summary>
/// Shows the preview.
/// </summary>
/// <param name="report">The report.</param>
/// <param name="gReport">The g report.</param>
/// <param name="currentPerson">The current person.</param>
/// <param name="databaseTimeoutSeconds">The database timeout seconds.</param>
/// <param name="errorMessage">The error message.</param>
public static void BindGrid( Report report, Grid gReport, Person currentPerson, int? databaseTimeoutSeconds, out string errorMessage )
{
errorMessage = null;
if ( report != null )
{
var errors = new List<string>();
if ( !report.EntityTypeId.HasValue )
{
gReport.Visible = false;
return;
}
var rockContext = new RockContext();
if ( !report.IsAuthorized( Authorization.VIEW, currentPerson ) )
{
gReport.Visible = false;
return;
}
Type entityType = EntityTypeCache.Read( report.EntityTypeId.Value, rockContext ).GetEntityType();
if ( entityType == null )
{
errorMessage = string.Format( "Unable to determine entityType for {0}", report.EntityType );
return;
}
gReport.EntityTypeId = report.EntityTypeId;
bool isPersonDataSet = report.EntityTypeId == EntityTypeCache.Read( typeof( Rock.Model.Person ), true, rockContext ).Id;
if ( isPersonDataSet )
{
gReport.PersonIdField = "Id";
gReport.DataKeyNames = new string[] { "Id" };
}
else
{
gReport.PersonIdField = null;
}
if ( report.EntityTypeId.HasValue )
{
gReport.RowItemText = EntityTypeCache.Read( report.EntityTypeId.Value, rockContext ).FriendlyName;
}
List<EntityField> entityFields = Rock.Reporting.EntityHelper.GetEntityFields( entityType, true, false );
var selectedEntityFields = new Dictionary<int, EntityField>();
var selectedAttributes = new Dictionary<int, AttributeCache>();
var selectedComponents = new Dictionary<int, ReportField>();
// if there is a selectField, keep it to preserve which items are checked
var selectField = gReport.Columns.OfType<SelectField>().FirstOrDefault();
gReport.Columns.Clear();
int columnIndex = 0;
if ( !string.IsNullOrWhiteSpace( gReport.PersonIdField ) )
{
// if we already had a selectField, use it (to preserve checkbox state)
gReport.Columns.Add( selectField ?? new SelectField() );
columnIndex++;
}
var reportFieldSortExpressions = new Dictionary<Guid, string>();
foreach ( var reportField in report.ReportFields.OrderBy( a => a.ColumnOrder ) )
{
columnIndex++;
if ( reportField.ReportFieldType == ReportFieldType.Property )
{
var entityField = entityFields.FirstOrDefault( a => a.Name == reportField.Selection );
if ( entityField != null )
{
selectedEntityFields.Add( columnIndex, entityField );
BoundField boundField = entityField.GetBoundFieldType();
boundField.DataField = string.Format( "Entity_{0}_{1}", entityField.Name, columnIndex );
boundField.HeaderText = string.IsNullOrWhiteSpace( reportField.ColumnHeaderText ) ? entityField.Title : reportField.ColumnHeaderText;
boundField.SortExpression = boundField.DataField;
reportFieldSortExpressions.AddOrReplace( reportField.Guid, boundField.SortExpression );
boundField.Visible = reportField.ShowInGrid;
gReport.Columns.Add( boundField );
}
}
else if ( reportField.ReportFieldType == ReportFieldType.Attribute )
{
Guid? attributeGuid = reportField.Selection.AsGuidOrNull();
if ( attributeGuid.HasValue )
{
var attribute = AttributeCache.Read( attributeGuid.Value, rockContext );
//.........这里部分代码省略.........