Exemplo n.º 1
0
        public bool CanMovePage(UserContext user, Page page, Page parentPage = null)
        {
            var site = _siteManager.GetByIdAsync(page.SiteId).Result;

            // these are the valid claims when the parentPage is null
            var validParentClaims = new List <SecurityClaim> {
                new SecurityClaim(SiteClaimTypes.SitePrimaryAdmin, ConnectCoreConstants.CorporateId),
                new SecurityClaim(SiteClaimTypes.SitePrimaryAdmin, site.ClientId),
                new SecurityClaim(SiteClaimTypes.SitePrimaryAdmin, site.Id)
            };

            if (parentPage != null)
            {
                // allow page owners to move pages around in their section
                validParentClaims.Add(
                    new SecurityClaim(PageClaimTypes.PageOwner, parentPage.Id)
                    );
            }

            var validChildClaims = new SecurityClaim[]
            {
                new SecurityClaim(SiteClaimTypes.SitePrimaryAdmin, ConnectCoreConstants.CorporateId),
                new SecurityClaim(SiteClaimTypes.SitePrimaryAdmin, site.ClientId),
                new SecurityClaim(SiteClaimTypes.SitePrimaryAdmin, site.Id),
                new SecurityClaim(PageClaimTypes.PageOwner, page.Id),
            };


            return(user.SecurityClaims.FindAny(validParentClaims) &&
                   user.SecurityClaims.FindAny(validChildClaims));
        }
Exemplo n.º 2
0
        private static void EnsureAuthorizationClaims(DbContextBase db, User admin)
        {
            string[] claims = new string[]
            {
                SecurityClaimTypes.Example
            };

            foreach (string claim in claims)
            {
                var securityClaim = db.SecurityClaim.FirstOrDefault(o => o.SecurityClaimId == claim);

                if (securityClaim == null)
                {
                    securityClaim = new SecurityClaim()
                    {
                        CreatedBy         = admin.UserId,
                        CreatedOn         = DateTime.UtcNow,
                        Description       = claim,
                        Enabled           = true,
                        Origin            = "System",
                        ValidationPattern = SecurityClaimTypes.AllowedValuesPattern,
                        SecurityClaimId   = claim
                    };

                    db.SecurityClaim.Add(securityClaim);
                    db.SaveChanges();
                }
            }
        }
Exemplo n.º 3
0
        private bool CreateOrUpdateMetadata(Dataset dataset, OpenMetadataEndpoint endpoint)
        {
            string identifier = null;

            try
            {
                identifier = GetIdentifierFromUri(dataset.identifier);
                var metadataModel = _metadataService.GetMetadataModel(identifier);

                if (metadataModel == null)
                {
                    InsertOpenMetadata(identifier, dataset, endpoint);
                    Log.Info(
                        $"Created metadata entry for open dataset: [identifier={identifier}, title={dataset.title}, organization={endpoint.OrganizationName}");
                    metadataModel = _metadataService.GetMetadataModel(identifier);
                }

                MapDatasetToMetadataViewModel(dataset, metadataModel, endpoint);
                _metadataService.SaveMetadataModel(metadataModel, SecurityClaim.GetUsername());
                Log.Info(
                    $"Updated metadata entry for open dataset: [identifier={identifier}, title={metadataModel.Title}, organization={endpoint.OrganizationName}");
            }
            catch (Exception e)
            {
                Log.Error(
                    $"Error while creating or updating open metadata with identifier={identifier} for endpoint={endpoint}. {e.Message}",
                    e);
                return(false);
            }

            return(true);
        }
Exemplo n.º 4
0
        public bool CanPublishMaster(UserContext user, PageMaster master)
        {
            var site = _siteManager.GetByIdAsync(master.SiteId).Result;

            // HOTFIX: Only corporate users can perform this activity
            var validClaims = new SecurityClaim[]
            {
                new SecurityClaim(SiteClaimTypes.SitePrimaryAdmin, ConnectCoreConstants.CorporateId),
                new SecurityClaim(SiteClaimTypes.SiteMasterPagesPublish, ConnectCoreConstants.CorporateId),
            };

            return(user.SecurityClaims.FindAny(validClaims));
        }
Exemplo n.º 5
0
        public bool CanCreatePage(UserContext user, Site site)
        {
            var validClaims = new SecurityClaim[]
            {
                new SecurityClaim(SiteClaimTypes.SitePrimaryAdmin, ConnectCoreConstants.CorporateId),
                new SecurityClaim(SiteClaimTypes.SitePrimaryAdmin, site.ClientId),
                new SecurityClaim(SiteClaimTypes.SitePrimaryAdmin, site.Id),
                new SecurityClaim(SiteClaimTypes.SitePagesCreate, ConnectCoreConstants.CorporateId),
                new SecurityClaim(SiteClaimTypes.SitePagesCreate, site.ClientId),
                new SecurityClaim(SiteClaimTypes.SitePagesCreate, site.Id)
            };

            return(user.SecurityClaims.FindAny(validClaims));
        }
Exemplo n.º 6
0
        public bool CanDeletePage(UserContext user, Page page)
        {
            var site = _siteManager.GetByIdAsync(page.SiteId).Result;

            var validClaims = new SecurityClaim[]
            {
                new SecurityClaim(SiteClaimTypes.SitePrimaryAdmin, ConnectCoreConstants.CorporateId),
                new SecurityClaim(SiteClaimTypes.SitePrimaryAdmin, site.ClientId),
                new SecurityClaim(SiteClaimTypes.SitePrimaryAdmin, site.Id),
                new SecurityClaim(SiteClaimTypes.SitePagesDelete, ConnectCoreConstants.CorporateId),
                new SecurityClaim(SiteClaimTypes.SitePagesDelete, site.ClientId),
                new SecurityClaim(SiteClaimTypes.SitePagesDelete, site.Id),
                new SecurityClaim(PageClaimTypes.PageOwner, page.Id),
            };

            return(user.SecurityClaims.FindAny(validClaims));
        }
Exemplo n.º 7
0
        private void InsertOpenMetadata(string identifier, Dataset dataset, OpenMetadataEndpoint openMetadataEndpoint)
        {
            var newMetadata = new MetadataCreateViewModel();

            newMetadata.Uuid  = identifier;
            newMetadata.Type  = "dataset";
            newMetadata.Title = dataset.title;
            newMetadata.MetadataContactOrganization =
                !string.IsNullOrEmpty(openMetadataEndpoint.OrganizationName)
                    ? openMetadataEndpoint.OrganizationName
                    : dataset.publisher.name;
            newMetadata.MetadataContactName  = dataset.contactPoint.fn;
            newMetadata.MetadataContactEmail = dataset.contactPoint.hasEmail.Replace("mailto:", "");
            var uuid = _metadataService.CreateMetadata(newMetadata, SecurityClaim.GetUsername());

            Log.Info("Created open metadata uuid: " + uuid);
        }