Esempio n. 1
0
        /// <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);
                    }
                }
            }
        }
Esempio n. 2
0
        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
                }));
            }
        }