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);
        }
Beispiel #2
0
        public List <EntityDirectReportDTO> GetEntityDirectReports(DR_Requester requester, int entityID)
        {
            List <EntityDirectReportDTO> result = new List <EntityDirectReportDTO>();

            using (var projectContext = new DataAccess.MyProjectEntities())
            {
                var list = projectContext.EntityDirectlReport.Where(x => x.EntityDataItemReport.EntityReport.TableDrivedEntityID == entityID);
                foreach (var item in list)
                {
                    if (bizEntityReport.DataIsAccessable(requester, item.EntityDataItemReport.EntityReport))
                    {
                        result.Add(ToEntityDirectReportDTO(requester, item, false));
                    }
                }
            }
            return(result);
        }
        private bool DataIsAccessable(DR_Requester requester, NavigationTree navigationTree)
        {
            if (navigationTree.TableDrivedEntityID != null)
            {
                if (!bizTableDrivedEntity.DataIsAccessable(requester, navigationTree.TableDrivedEntity))
                {
                    return(false);
                }
            }
            var category = (DatabaseObjectCategory)Enum.Parse(typeof(DatabaseObjectCategory), navigationTree.Category);

            if (category == DatabaseObjectCategory.Report)
            {
                if (!bizEntityReport.DataIsAccessable(requester, navigationTree.ItemIdentity))
                {
                    return(false);
                }
            }
            if (category == DatabaseObjectCategory.Letter)
            {
                if (!bizTableDrivedEntity.DataIsAccessable(requester, navigationTree.TableDrivedEntity, new List <SecurityAction>()
                {
                    SecurityAction.LetterView, SecurityAction.LetterEdit
                }))
                {
                    return(false);
                }
            }
            if (category == DatabaseObjectCategory.Archive)
            {
                if (!bizTableDrivedEntity.DataIsAccessable(requester, navigationTree.TableDrivedEntity, new List <SecurityAction>()
                {
                    SecurityAction.ArchiveView, SecurityAction.ArchiveEdit
                }))
                {
                    return(false);
                }
            }
            return(true);
        }
Beispiel #4
0
        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);
        }