示例#1
0
        // metadata

        /*private static IDictionary<string, IDictionary<string, string>> ToModel(this IEnumerable<Metadata> source, string tier)
         * {
         *  if (!source.Any())
         *      return new Dictionary<string, IDictionary<string, string>>();
         *
         *  IDictionary<string, string> values = source.ToDictionary(m => m.Key, m => m.Value);
         *  IDictionary<string, IDictionary<string, string>> set = new Dictionary<string, IDictionary<string, string>>
         *  {
         *      { tier, values }
         *  };
         *  return set;
         * }*/

        // privileges
        private static IDictionary <string, IDictionary <string, IEnumerable <ACLModel> > > ToModel(this IEnumerable <Privilege> source, string tier, string destinationTier)
        {
            if (!source.Any())
            {
                return(new Dictionary <string, IDictionary <string, IEnumerable <ACLModel> > >());
            }

            var values = new Dictionary <string, IEnumerable <ACLModel> >();

            foreach (var privilege in source.Where(s => s.Tier == tier))
            {
                var right = values.ContainsKey(privilege.Type)
                    ? values[privilege.Type].ToList()
                    : new List <ACLModel>();
                values[privilege.Type] = right;

                var acl = right.FirstOrDefault(a => a.OverrideKey == privilege.OverrideKey);
                if (acl == null)
                {
                    right.Add(acl = new ACLModel {
                        OverrideKey = privilege.OverrideKey
                    });
                }

                var identifiers = acl.RequiredIdentifiers?.ToList() ?? new List <string>();

                identifiers.Add(privilege.Identifier);

                acl.RequiredIdentifiers = identifiers;
            }

            IDictionary <string, IDictionary <string, IEnumerable <ACLModel> > > set
                = new Dictionary <string, IDictionary <string, IEnumerable <ACLModel> > >
                {
                { destinationTier, values }
                };

            return(set);
        }
示例#2
0
 public ACLModel GetACLModel()
 {
     return(ACLModel.Create(_roleService.GetAllRoles(), GetAllSystemRules()));
 }