private bool HasAccessToMetadata(MetadataViewModel model) { string organization = GetSecurityClaim("organization"); string role = GetSecurityClaim("role"); bool isAdmin = !string.IsNullOrWhiteSpace(role) && role.Equals("nd.metadata_admin"); return isAdmin || model.HasAccess(organization); }
public Dictionary<string, string> GetSubRegister(string registername, MetadataViewModel model) { string role = GetSecurityClaim("role"); MemoryCacher memCacher = new MemoryCacher(); var cache = memCacher.GetValue("subregisteritem"); Dictionary<string, string> RegisterItems = new Dictionary<string, string>(); if (cache != null) { RegisterItems = cache as Dictionary<string, string>; } if (RegisterItems.Count < 1) { System.Net.WebClient c = new System.Net.WebClient(); c.Encoding = System.Text.Encoding.UTF8; var data = c.DownloadString(System.Web.Configuration.WebConfigurationManager.AppSettings["RegistryUrl"] + "api/subregister/" + registername); var response = Newtonsoft.Json.Linq.JObject.Parse(data); var items = response["containeditems"]; foreach (var item in items) { var id = item["id"].ToString(); var owner = item["owner"].ToString(); string organization = item["owner"].ToString(); if (!RegisterItems.ContainsKey(id)) { if (!string.IsNullOrWhiteSpace(role) && role.Equals("nd.metadata_admin") || model.HasAccess(organization)) RegisterItems.Add(id, item["label"].ToString()); } } } RegisterItems = RegisterItems.OrderBy(o => o.Value).ToDictionary(o => o.Key, o => o.Value); memCacher.Add("subregisteritem", RegisterItems, new DateTimeOffset(DateTime.Now.AddYears(1))); return RegisterItems; }