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); } } }
//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); }
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); }
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, ""); ////// } //////} }