Example #1
0
        private async Task <TenantContext <SiteSettings> > ResolveByFolderAsync(HttpContext context)
        {
            var siteFolderName = context.Request.Path.StartingSegment();

            if (siteFolderName.Length == 0)
            {
                siteFolderName = "root";
            }

            TenantContext <SiteSettings> tenantContext = null;

            CancellationToken cancellationToken = context?.RequestAborted ?? CancellationToken.None;

            ISiteSettings site
                = await siteRepo.FetchByFolderName(siteFolderName, cancellationToken);

            if (site != null)
            {
                dataProtector.UnProtect(site);

                tenantContext = new TenantContext <SiteSettings>((SiteSettings)site);
            }

            return(tenantContext);
        }
Example #2
0
        /// <summary>
        /// returns true if the folder is not in use or is in use only on the passed in ISiteSettings
        /// </summary>
        /// <param name=""></param>
        /// <param name="requestedFolderName"></param>
        /// <returns></returns>
        public async Task <bool> FolderNameIsAvailable(ISiteSettings requestingSite, string requestedFolderName)
        {
            var matchingSite = await siteRepo.FetchByFolderName(requestedFolderName, CancellationToken);

            if (matchingSite == null)
            {
                return(true);
            }
            if (matchingSite.SiteFolderName != requestedFolderName)
            {
                return(true);
            }
            if (matchingSite.SiteGuid == requestingSite.SiteGuid)
            {
                return(true);
            }

            return(false);
        }