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> GetRegister(string registername, MetadataViewModel model) { string role = GetSecurityClaim("role"); MemoryCacher memCacher = new MemoryCacher(); var cache = memCacher.GetValue("registeritem-" + registername); List <RegisterItem> RegisterItems = new List <RegisterItem>(); if (cache != null) { RegisterItems = cache as List <RegisterItem>; } 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/register/" + 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(); var registerItem = new RegisterItem { Id = id, Label = item["label"].ToString(), Organization = organization }; if (!RegisterItems.Contains(registerItem)) { RegisterItems.Add(registerItem); } } var logLines = RegisterItems.Select(l => l.Id + ": " + l.Label); Log.Info(string.Format("Setting cache for registername: {0}, items: " + Environment.NewLine + " {1}", registername, string.Join(Environment.NewLine, logLines))); memCacher.Set("registeritem-" + registername, RegisterItems, new DateTimeOffset(DateTime.Now.AddYears(1))); } Dictionary <string, string> RegisterItemsForUser = new Dictionary <string, string>(); foreach (var item in RegisterItems) { if (!string.IsNullOrWhiteSpace(role) && role.Equals("nd.metadata_admin") || model.HasAccess(item.Organization)) { RegisterItemsForUser.Add(item.Id, item.Label); } } RegisterItemsForUser = RegisterItemsForUser.OrderBy(o => o.Value).ToDictionary(o => o.Key, o => o.Value); return(RegisterItemsForUser); }