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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }