Example #1
0
        /// <summary>
        /// Gets all names of entities set in RightsCheckList attribute
        /// Includes entity itself if it's present in entities rights
        /// </summary>
        /// <param name="dataType"></param>
        /// <returns></returns>
        private List <string> GetEntitiesToCheck(Type dataType)
        {
            if (!_checkedEntites.TryGetValue(dataType, out var entitiesToCheck))
            {
                foreach (var custAttr in dataType.GetCustomAttributes(false))
                {
                    if (custAttr is RightsCheckListAttribute rightsAttr)
                    {
                        entitiesToCheck = rightsAttr.CheckedEntities;
                    }
                }

                if (EntityRights.ContainsKey(dataType.Name))
                {
                    if (entitiesToCheck == null)
                    {
                        entitiesToCheck = new List <string>(1)
                        {
                            dataType.Name
                        };
                    }
                    else
                    {
                        entitiesToCheck.Add(dataType.Name);
                    }
                }
                _checkedEntites[dataType] = entitiesToCheck;
            }

            return(entitiesToCheck);
        }