Пример #1
0
        /// <summary>
        /// Gets the permission names.
        /// </summary>
        /// <param name="uris">The uris.</param>
        /// <returns>List of premission names.</returns>
        internal static List <string> GetPermissionNames(IEnumerable <string> uris)
        {
            List <string> permissionNames = new List <string>();

            foreach (string uri in uris)
            {
                SecurityPredicate pr = SecurityPredicateAccess.SecurityPredicates.Where(sp =>
                                                                                        sp.Uri.Equals(uri, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();
                if (pr != null)
                {
                    permissionNames.Add(pr.Name);
                }
                else
                {
                    pr = SecurityPredicateAccess.SecurityPredicates.Where(sp =>
                                                                          sp.InverseUri.Equals(uri, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();
                    if (pr != null)
                    {
                        permissionNames.Add(pr.Name);
                    }
                }
            }

            ////Process 'read' permission - if no deny read is present add read permission to the list
            if (!uris.Contains(SecurityPredicateAccess.GetInverseUri("Read")))
            {
                permissionNames.Add("Read");
            }

            return(permissionNames);
        }
Пример #2
0
        /// <summary>
        /// Reads the predicates list.
        /// </summary>
        private static void ReadPredicatesList()
        {
            predicateList = new List <SecurityPredicate>();
            XmlDocument doc = new XmlDocument();

            doc.LoadXml(ConstantStrings.SecurityConfiguration);
            XmlNodeList lst = doc.SelectNodes(@"//SecurityPredicates/add");

            foreach (XmlNode node in lst)
            {
                string            name       = node.Attributes["Name"].Value;
                string            uri        = node.Attributes["Uri"].Value;
                string            inverseUri = node.Attributes["InversePredicateUri"].Value;
                int               priority   = Convert.ToInt32(node.Attributes["Priority"].Value, CultureInfo.InvariantCulture);
                SecurityPredicate predicate  = new SecurityPredicate {
                    Name = name, Uri = uri, InverseUri = inverseUri, Priority = priority
                };
                predicateList.Add(predicate);
            }
        }