/// <summary> /// Categorize properties of page to Infobox, Citation, Geobox /// </summary> /// <param name="pages">List of pages</param> private static void CategorizeProperties(List <Page> pages) { foreach (var page in pages) { foreach (var item in page.Infoboxes) { var type = item.GetType(); item.SetRegexAttributes(); if (type == typeof(Infobox)) { var info = item as Infobox; Locations.AddRange(GetNamedEntities(info, NamedEntityType.Location)); Persons.AddRange(GetNamedEntities(info, NamedEntityType.Person)); Organizations.AddRange(GetNamedEntities(info, NamedEntityType.Organization)); Infoboxes.Add(info); } else if (type == typeof(Citation)) { var cit = item as Citation; cit.AddFullNames(); Locations.AddRange(GetNamedEntities(cit, NamedEntityType.Location)); Persons.AddRange(GetNamedEntities(cit, NamedEntityType.Person)); Organizations.AddRange(GetNamedEntities(cit, NamedEntityType.Organization)); Citations.Add(cit); } else if (type == typeof(Geobox)) { var geo = item as Geobox; Locations.AddRange(GetNamedEntities(geo, NamedEntityType.Location)); Persons.AddRange(GetNamedEntities(geo, NamedEntityType.Person)); Geoboxes.Add(geo); } } } }
public void Build(ClaimsPrincipal user) { if (_builtClaimsPrincipal) { return; } _builtClaimsPrincipal = true; if (user == null || !user.Claims.Any()) { return; } var claimsDict = user.Claims.GroupBy(c => c.Type).ToDictionary(c => c.Key, c => c.Select(v => v)); var subject = GetClaimValue(claimsDict, "sub"); if (Guid.TryParse(subject, out var subIdGuid)) { UserId = subIdGuid; } var clientId = GetClaimValue(claimsDict, "client_id"); var clientSubject = GetClaimValue(claimsDict, "client_sub"); if ((clientId?.StartsWith("installation.") ?? false) && clientSubject != null) { if (Guid.TryParse(clientSubject, out var idGuid)) { InstallationId = idGuid; } } DeviceIdentifier = GetClaimValue(claimsDict, "device"); if (claimsDict.ContainsKey("orgowner")) { Organizations.AddRange(claimsDict["orgowner"].Select(c => new CurrentContentOrganization { Id = new Guid(c.Value), Type = OrganizationUserType.Owner })); } if (claimsDict.ContainsKey("orgadmin")) { Organizations.AddRange(claimsDict["orgadmin"].Select(c => new CurrentContentOrganization { Id = new Guid(c.Value), Type = OrganizationUserType.Admin })); } if (claimsDict.ContainsKey("orguser")) { Organizations.AddRange(claimsDict["orguser"].Select(c => new CurrentContentOrganization { Id = new Guid(c.Value), Type = OrganizationUserType.User })); } }