Example #1
0
        private void SetChildPermissions(DR_Requester requester, MyProjectEntities context, AssignedPermissionDTO parentItem, List <SecurityObject> childObjects, IQueryable <OrganizationPost> posts)
        {
            foreach (var childObject in childObjects)
            {
                AssignedPermissionDTO assignedPermissionDTO = new AssignedPermissionDTO();
                assignedPermissionDTO.SecurityObjectID   = childObject.ID;
                assignedPermissionDTO.SecurityObjectType = (DatabaseObjectCategory)childObject.Type;
                var objectCategory                = (DatabaseObjectCategory)childObject.Type;
                var possibleActionTree            = GetActionsByCategory(objectCategory);
                List <SecurityAction> permissions = null;
                if (requester.SkipSecurity)
                {
                }
                else
                {
                    permissions = GetPersmissionByPosts(context, posts, childObject, false);
                }
                if (permissions != null && permissions.Any() && parentItem.GrantedActions.Any())
                {
                    List <Tuple <int, SecurityAction> > distantChildParentPermissions = new List <Tuple <int, SecurityAction> >();
                    foreach (var permission in permissions)
                    {
                        distantChildParentPermissions.Add(new Tuple <int, SecurityAction>(0, permission));
                    }
                    foreach (var permission in parentItem.GrantedActions)
                    {
                        distantChildParentPermissions.Add(new Tuple <int, SecurityAction>(1, permission));
                    }
                    assignedPermissionDTO.GrantedActions = GetPossibleActions(distantChildParentPermissions, possibleActionTree);
                }
                else if (permissions != null && permissions.Any())
                {
                    assignedPermissionDTO.GrantedActions = permissions;
                }
                else if (parentItem.GrantedActions.Any())
                {
                    assignedPermissionDTO.GrantedActions = parentItem.GrantedActions;
                }

                parentItem.ChildsPermissions.Add(assignedPermissionDTO);
                var newchildObjects = GetChildObjects(childObject);
                if (newchildObjects != null)
                {
                    SetChildPermissions(requester, context, assignedPermissionDTO, newchildObjects, posts);
                }
            }
        }
Example #2
0
        //private IQueryable<ConditionalPermission> GetConditionalPermissions(MyProjectEntities context, int entityID, int securitySubjectID)
        //{
        //    return
        //}

        public AssignedPermissionDTO GetAssignedPermissions(DR_Requester requester, int securityObjectID, bool withChildObjects)
        {
            AssignedPermissionDTO result = new AssignedPermissionDTO();

            //var cachedItem = CacheManager.GetCacheManager().GetCachedItem(CacheItemType.Permission, requester.Identity.ToString(), securityObjectID.ToString(), withChildObjects.ToString());
            //if (cachedItem != null)
            //    return (cachedItem as AssignedPermissionDTO);
            using (var context = new MyProjectEntities())
            {
                SecurityObject securityObject = context.SecurityObject.First(x => x.ID == securityObjectID);

                var organizationPosts = GetDBOrganizationPosts(context, requester);
                //if (organizationPosts.Any(x => x.OrganizationType_RoleType.RoleType.IsSuperAdmin == true))
                //    requester.SkipSecurity = true;
                if (requester.SkipSecurity == true)
                {
                    result.GrantedActions.Add(SecurityAction.ArchiveEdit);
                    result.GrantedActions.Add(SecurityAction.LetterEdit);
                    //result.GrantedActions.Add(SecurityAction.ArchiveMenuAccess);
                    result.GrantedActions.Add(SecurityAction.EditAndDelete);
                    //result.GrantedActions.Add(SecurityAction.MenuAccess);
                }
                else
                {
                    var allowedActions = GetPersmissionByPosts(context, organizationPosts, securityObject, true);
                    result.GrantedActions   = allowedActions;
                    result.SecurityObjectID = securityObjectID;
                }
                if (withChildObjects)
                {
                    var childObjects = GetChildObjects(securityObject);
                    if (childObjects != null)
                    {
                        SetChildPermissions(requester, context, result, childObjects, organizationPosts);
                    }
                }
                // result = GetAssignedPermissions(context, organizationPosts, securityObject, withChildObjects);
            }
            CacheManager.GetCacheManager().AddCacheItem(result, CacheItemType.Permission, requester.Identity.ToString(), securityObjectID.ToString(), withChildObjects.ToString());
            return(result);
        }
Example #3
0
        public AssignedPermissionDTO GetSubSystemAssignedPermissions(DR_Requester requester, string objectName)
        {
            AssignedPermissionDTO result = new AssignedPermissionDTO();
            var cachedItem = CacheManager.GetCacheManager().GetCachedItem(CacheItemType.Permission, requester.Identity.ToString(), objectName);

            if (cachedItem != null)
            {
                return(cachedItem as AssignedPermissionDTO);
            }
            using (var context = new MyProjectEntities())
            {
                var            organizationPosts = GetDBOrganizationPosts(context, requester);
                SecurityObject securityObject    = context.SubSystems.FirstOrDefault(x => x.Name == objectName)?.SecurityObject;
                if (securityObject != null)
                {
                    var allowedActions = GetPersmissionByPosts(context, organizationPosts, securityObject, true);
                    result.GrantedActions   = allowedActions;
                    result.SecurityObjectID = securityObject.ID;
                }
            }
            CacheManager.GetCacheManager().AddCacheItem(result, CacheItemType.Permission, requester.Identity.ToString(), objectName);
            return(result);
        }
Example #4
0
        private void GenerateViewRelationshipColumns(RelationshipDTO parentRelationship, string parentRelatoinshipIds, TableDrivedEntityDTO entity, AssignedPermissionDTO permissoins, List <EntityUICompositionDTO> uICompositions)
        {
            //foreach (var column in entity.Columns.OrderBy(x => x.Position))
            //{

            //    //////var propertyControl = new SimpleViewColumnControl() { Column = column };
            //    //////if (parentRelationship != null)
            //    //////{
            //    //////    propertyControl.RelationshipColumnName = parentRelatoinshipIds + "#" + entity.ID + "_" + column.ID;
            //    //////    propertyControl.Alias = entity.Alias + "-" + propertyControl.Column.Alias;
            //    //////}
            //    ////////AgentHelper.SetPropertyTitle(propertyControl);
            //    ////////propertyControl.ColumnSetting = new ColumnSetting();
            //    //////propertyControl.IsPermanentReadOnly = true;
            //    //////propertyControl.MultipleDataControlPackage = new DataDependentControlPackage();
            //    ////////////propertyControl.MultipleDataControlPackage.ControlManager= AgentUICoreMediator.UIManager.GenerateMultipleDataDependentControl(column, propertyControl.ColumnSetting);


            //    //////ViewColumnControls.Add(propertyControl);


            //    //////ViewView.AddUIControlPackage(propertyControl.MultipleDataControlPackage , propertyControl.Alias, Temp.InfoColor.Black, "");

            //}

            //////foreach (var relationship in entity.Relationships
            //////    .Where(x => x.ViewEnabled == true))
            //////{

            //////    //////var propertyControl = new ViewColumnControl();
            //////    //////var column = ViewInitializer.ViewEntity.Columns.First(x => x.ID == relationship.FirstSideColumns.First().ID);
            //////    //////propertyControl.Column = column;
            //////    //////propertyControl.Relationship = relationship;
            //////    //////AgentHelper.SetPropertyTitle(propertyControl);

            //////    //////propertyControl.ColumnSetting = new ColumnSetting();
            //////    //////propertyControl.ColumnSetting.IsReadOnly = true;
            //////    //////propertyControl.ControlPackage = AgentUICoreMediator.UIManager.GenerateMultipleDataDependentControl(propertyControl.Column, propertyControl.ColumnSetting);


            //////    //////ViewColumnControls.Add(propertyControl);


            //////    //////ViewView.AddUIControlPackage(propertyControl.ControlPackage as DataDependentControlPackage, propertyControl.Alias, Temp.InfoColor.Black, "");
            //////    if (relationship.TypeEnum != Enum_RelationshipType.OneToMany)
            //////    {
            //////        var relationentity = GetFullEntity(relationship.EntityID2);
            //////        GenerateViewRelationshipColumns(relationship, parentRelatoinshipIds + "_" + relationship.ID, relationentity.Entity, relationentity.Permissoins, relationentity.UICompositions);
            //////    }
            //////    else
            //////    {
            //////        //ستون الکی ایجاد شده
            //////        var column = new ColumnDTO();
            //////        var propertyControl = new SimpleViewColumnControl() { Column = column };

            //////        propertyControl.RelationshipColumnName = parentRelatoinshipIds + "_" + relationship.ID + "#" + relationship.EntityID2;
            //////        propertyControl.Alias = relationship.Entity2;

            //////        //AgentHelper.SetPropertyTitle(propertyControl);
            //////        propertyControl.ColumnSetting = new ColumnSetting();
            //////        propertyControl.IsPermanentReadOnly = true;
            //////        propertyControl.ControlPackage = AgentUICoreMediator.UIManager.GenerateMultipleDataDependentControl(column, propertyControl.ColumnSetting);


            //////        ViewColumnControls.Add(propertyControl);


            //////        ViewView.AddUIControlPackage(propertyControl.ControlPackage as DataDependentControlPackage, propertyControl.Alias, Temp.InfoColor.Black, "");
            //////    }
            //////}
        }