Beispiel #1
0
        private async ValueTask ValidateCanonicalNameAsync(TenantManager <TTenant> manager, TTenant tenant, ICollection <TenancyError> errors)
        {
            var canonicalName = await manager.GetCanonicalNameAsync(tenant);

            if (string.IsNullOrWhiteSpace(canonicalName))
            {
                errors.Add(Describer.InvalidCanonicalName(canonicalName));
            }
            else if (!string.IsNullOrEmpty(manager.Options.Tenant.AllowedCanonicalNameCharacters) &&
                     canonicalName.Any(c => !manager.Options.Tenant.AllowedCanonicalNameCharacters.Contains(c)))
            {
                errors.Add(Describer.InvalidCanonicalName(canonicalName));
            }
            else
            {
                var owner = await manager.FindByCanonicalNameAsync(canonicalName);

                if (owner != null &&
                    !string.Equals(await manager.GetTenantIdAsync(owner), await manager.GetTenantIdAsync(tenant)))
                {
                    errors.Add(Describer.DuplicateCanonicalName(canonicalName));
                }
            }
        }