public bool DataIsAccessable(DR_Requester requester, DataLinkDefinition dataLink) { if (requester.SkipSecurity) { return(true); } if (!bizTableDrivedEntity.DataIsAccessable(requester, dataLink.TableDrivedEntity)) { return(false); } if (!bizEntityReport.DataIsAccessable(requester, dataLink.EntityDataItemReport.EntityReport)) { return(false); } //اینجا تیل چک نمیشه foreach (var tail in dataLink.DataLinkDefinition_EntityRelationshipTail) { if (!bizEntityRelationshipTail.DataIsAccessable(requester, tail.EntityRelationshipTail)) { return(false); } } return(true); }
private bool ImposeSecurity(DR_Requester requester, EntitySearchDTO entitySearchDTO, TableDrivedEntity entity) { BizColumn bizColumn = new BizColumn(); if (requester.SkipSecurity) { return(true); } if (!bizTableDrivedEntity.DataIsAccessable(requester, entity)) { return(false); } var permission = bizTableDrivedEntity.GetEntityAssignedPermissions(requester, entitySearchDTO.TableDrivedEntityID, true); List <EntitySearchColumnsDTO> removeList = new List <ModelEntites.EntitySearchColumnsDTO>(); foreach (var columnGroup in entitySearchDTO.EntitySearchAllColumns.GroupBy(x => x.RelationshipTailID)) { bool pathPermission = true; if (columnGroup.Key == 0) { pathPermission = true; } else { var relationshipTail = columnGroup.First(x => x.RelationshipTailID == columnGroup.Key).RelationshipTail; pathPermission = bizEntityRelationshipTail.DataIsAccessable(requester, relationshipTail); } if (!pathPermission) { foreach (var column in columnGroup) { removeList.Add(column); } } else { foreach (var column in columnGroup) { if (column.ColumnID != 0 && !bizColumn.DataIsAccessable(requester, column.ColumnID)) { removeList.Add(column); } } } } foreach (var remove in removeList) { entitySearchDTO.EntitySearchAllColumns.Remove(remove); } return(true); }
private bool DataIsAccessable(DR_Requester requester, EntityGroup_Relationship ritem) { bool isvalid = true; if (ritem.EntityRelationshipTailID != null) { if (!bizEntityRelationshipTail.DataIsAccessable(requester, ritem.EntityRelationshipTail)) { isvalid = false; } } else if (ritem.EntityGroup.Process.TableDrivedEntity != null) { if (!bizTableDrivedEntity.DataIsAccessable(requester, ritem.EntityGroup.Process.TableDrivedEntity)) { isvalid = false; } } return(isvalid); }
public List <LetterRelationshipTailDTO> GetLetterRelationshipTails(DR_Requester requester, int entityID, bool withDetails) { List <LetterRelationshipTailDTO> result = new List <LetterRelationshipTailDTO>(); using (var projectContext = new DataAccess.MyProjectEntities()) { var list = projectContext.EntityLetterRelationshipTails.Where(x => x.TableDrivedEntityID == entityID); foreach (var item in list) { if (bizEntityRelationshipTail.DataIsAccessable(requester, item.EntityRelationshipTail)) { if (bizTableDrivedEntity.DataIsAccessable(requester, item.EntityRelationshipTail.TableDrivedEntity, new List <SecurityAction>() { SecurityAction.LetterView, SecurityAction.LetterEdit })) { result.Add(ToLetterRelationshipTailDTO(item, withDetails)); } } } } return(result); }
private DataMenuSettingDTO ToDataMenuSettingDTO(DR_Requester requester, DataMenuSetting entity, bool withDetails) { var result = new DataMenuSettingDTO(); if (withDetails) { foreach (var item in entity.DataMenuSearchableReportRelationship) { //دسترسی به خود گزارش هم کنترل شود if (bizEntityRelationshipTail.DataIsAccessable(requester, item.EntityRelationshipTail)) { if (bizEntityReport.DataIsAccessable(requester, item.EntitySearchableReport.EntityReport)) { var tail = bizEntityRelationshipTail.ToEntityRelationshipTailDTO(item.EntityRelationshipTail); var entityReportDTO = new EntitySearchableReportDTO(); bizEntitySearchableReport.ToEntitySearchableReportDTO(item.EntitySearchableReport, entityReportDTO, withDetails); result.SearchableReportRelationships.Add(ToDataMenuSearchableReportRelationshipDTO(item, tail, entityReportDTO)); } } } foreach (var item in entity.DataMenuDataViewRelationship) { if (bizEntityRelationshipTail.DataIsAccessable(requester, item.EntityRelationshipTail)) { var tail = bizEntityRelationshipTail.ToEntityRelationshipTailDTO(item.EntityRelationshipTail); result.DataViewRelationships.Add(ToDataMenuDataViewRelationshipDTO(item, tail)); } } foreach (var item in entity.DataMenuGridViewRelationship) { if (bizEntityRelationshipTail.DataIsAccessable(requester, item.EntityRelationshipTail)) { var tail = bizEntityRelationshipTail.ToEntityRelationshipTailDTO(item.EntityRelationshipTail); result.GridViewRelationships.Add(ToDataMenuGridViewRelationshipDTO(item, tail)); } } foreach (var item in entity.DataMenuDataItemReportRelationship) { if (bizEntityReport.DataIsAccessable(requester, item.EntityDataItemReportID)) { var entityReportDTO = new EntityDataItemReportDTO(); bizEntityDataItemReport.ToEntityDataItemReportDTO(item.EntityDataItemReport, entityReportDTO, false); result.DataItemReports.Add(ToDataMenuDataItemReportRelationshipDTO(item, entityReportDTO)); } } } result.EntityID = entity.TableDrivedEntityID; result.EntityListViewID = entity.EntityListViewID; result.Name = entity.Name; if (entity.DataMenuForViewEntity.Any()) { result.RelationshipID = entity.DataMenuForViewEntity.First().RelationshipID; if (withDetails) { if (bizRelationship.DataIsAccessable(requester, entity.DataMenuForViewEntity.First().Relationship, false, true)) { result.Relationship = bizRelationship.ToRelationshipDTO(entity.DataMenuForViewEntity.First().Relationship); } } result.TargetDataMenuSettingID = entity.DataMenuForViewEntity.First().TargetDataMenuSettingID; if (withDetails) { result.DataMenuSetting = ToDataMenuSettingDTO(requester, entity.DataMenuForViewEntity.First().DataMenuSetting1, false); } } result.ID = entity.ID; if (withDetails) { result.IconContent = entity.IconContent; } return(result); }