Пример #1
0
        /// <summary>
        /// Resolves the tenant using the Base Path Strategy (i.e. the first path segment).
        /// </summary>
        /// <returns>Returns the resolved <see cref="ITenantContext"/> if a tenant was resolved, otherwise <see langword="null"/>.</returns>
        public ITenantContext Resolve()
        {
            if (_httpContext == null)
            {
                return(_tenantStore.GetDefaultTenant() ?? throw new Exception("HttpContext is null and no default ITenantContext found."));
            }

            var request = _httpContext.Request;
            // used if site is identified by host name (and port)
            var host = request.Host.ToString();
            // first segment:  /
            // second segment: organization/
            // third segment:  account/
            var uri = new Uri(request.GetDisplayUrl());
            // used if site is identified by the first segment of the URI
            var urlSegmentValue = uri.Segments.Length > 1 ? uri.Segments[1].TrimEnd('/') : string.Empty;
            var tenant          = _tenantStore.GetTenantByUrlSegment(urlSegmentValue);

            if (tenant != null)
            {
                SetMostRecentTenantCookie(tenant);
                return(tenant);
            }

            return(_tenantStore.GetDefaultTenant());
        }
Пример #2
0
        public void GetDefaultTenant_Test()
        {
            Assert.DoesNotThrow(() => _ = _store.LoadTenants());
            var tenant = _store.GetDefaultTenant();

            Assert.AreEqual("DefaultTenant", tenant?.Identifier);
        }