public SecuritySubjectDTO ToSecuritySubjectDTO(SecuritySubject item) { SecuritySubjectDTO result = new SecuritySubjectDTO(); result.ID = item.ID; result.Type = (SecuritySubjectType)item.Type; if (result.Type == SecuritySubjectType.OrganizationPost) { result.Name = item.OrganizationPost.Name; } else if (result.Type == SecuritySubjectType.OrganizationTypeRoleType) { result.Name = item.OrganizationType_RoleType.OrganizationType.Name + " " + item.OrganizationType_RoleType.RoleType.Name; } else if (result.Type == SecuritySubjectType.RoleType) { result.Name = item.RoleType.Name; } else if (result.Type == SecuritySubjectType.Organization) { result.Name = item.Organization.Name; } else if (result.Type == SecuritySubjectType.OrganizationType) { result.Name = item.OrganizationType.Name; } return(result); }
private List <SecurityAction> GetAssignedPermissions(MyProjectEntities context, SecurityObject securityObject, SecuritySubject securitySubject) { //var cachedItem = CacheManager.GetCacheManager().GetCachedItem(CacheItemType.Permission, securitySubject.ID + "_" + securityObject.ID); //if (cachedItem != null) // return cachedItem as List<SecurityAction>; List <SecurityAction> result = new List <SecurityAction>(); //RoleType roleType = null; //if (securitySubject.OrganizationType_RoleType != null) // roleType = securitySubject.OrganizationType_RoleType.RoleType; //else if (securitySubject.RoleType != null) // roleType = securitySubject.RoleType; //else if (securitySubject.OrganizationPost != null) // roleType = securitySubject.OrganizationPost.OrganizationType_RoleType.RoleType; //if (roleType!=null &&roleType.IsSuperAdmin == true) // { // result.Add(SecurityAction.ArchiveEdit); // result.Add(SecurityAction.ArchiveMenuAccess); // result.Add(SecurityAction.ArchiveView); // result.Add(SecurityAction.EditAndDelete); // result.Add(SecurityAction.MenuAccess); // } // else // { var dbPermission = (securitySubject.Permission.FirstOrDefault(p => p.SecurityObjectID == securityObject.ID)); if (dbPermission != null) { foreach (var dbAction in dbPermission.Permission_Action) { var dbActionType = (SecurityAction)Enum.Parse(typeof(SecurityAction), dbAction.Action); result.Add(dbActionType); } } //} CacheManager.GetCacheManager().AddCacheItem(result, CacheItemType.Permission, securitySubject.ID + "_" + securityObject.ID); return(result); }
private List <Tuple <int, SecurityAction> > GetPersmissionByPost(MyProjectEntities context, SecuritySubject securitySubject, SecurityObject securityObject, int level, bool goUpward = true, List <Tuple <int, SecurityAction> > distantactions = null) { if (distantactions == null) { distantactions = new List <Tuple <int, SecurityAction> >(); } //کش شود cache //if(cachedItem!=null) var actions = GetAssignedPermissions(context, securityObject, securitySubject); foreach (var action in actions) { distantactions.Add(new Tuple <int, SecurityAction>(level, action)); } if (goUpward == true) { SecurityObject parentSecurityObject = null; var type = (DatabaseObjectCategory)securityObject.Type; if (type == DatabaseObjectCategory.Schema) { parentSecurityObject = securityObject.DBSchema.DatabaseInformation.SecurityObject; } else if (type == DatabaseObjectCategory.Entity) { parentSecurityObject = securityObject.TableDrivedEntity.Table.DBSchema.SecurityObject; } //else if (securityObject.ColumnID != null) // parentSecurityObject = securityObject.Column..Table.DBSchema.SecurityObject.First(); if (parentSecurityObject != null) { GetPersmissionByPost(context, securitySubject, parentSecurityObject, level + 1, goUpward, distantactions); } //else // return new List<ActionDTO>(); } return(distantactions); }