Example #1
0
        public DbTenantService(TenantDomainValidator tenantDomainValidator)
        {
            TenantDomainValidator = tenantDomainValidator;
            FromDbTenantToTenant  = r => new Tenant
            {
                Calls              = r.Calls,
                CreatedDateTime    = r.CreationDateTime,
                Industry           = r.Industry != null ? r.Industry.Value : TenantIndustry.Other,
                Language           = r.Language,
                LastModified       = r.LastModified,
                Name               = r.Name,
                OwnerId            = r.OwnerId,
                PaymentId          = r.PaymentId,
                Spam               = r.Spam,
                Status             = r.Status,
                StatusChangeDate   = r.StatusChanged,
                TenantAlias        = r.Alias,
                TenantId           = r.Id,
                MappedDomain       = r.MappedDomain,
                Version            = r.Version,
                VersionChanged     = r.VersionChanged,
                TrustedDomainsRaw  = r.TrustedDomains,
                TrustedDomainsType = r.TrustedDomainsEnabled,
                AffiliateId        = r.Partner != null ? r.Partner.AffiliateId : null,
                PartnerId          = r.Partner != null ? r.Partner.PartnerId : null,
                TimeZone           = r.TimeZone
            };

            var fromDbTenantToTenant = FromDbTenantToTenant.Compile();

            FromTenantUserToTenant = r => fromDbTenantToTenant(r.DbTenant);
        }
Example #2
0
 public PortalController(
     IConfiguration configuration,
     Core.SecurityContext securityContext,
     TenantManager tenantManager,
     SettingsManager settingsManager,
     ApiSystemHelper apiSystemHelper,
     CommonMethods commonMethods,
     HostedSolution hostedSolution,
     CoreSettings coreSettings,
     TenantDomainValidator tenantDomainValidator,
     UserFormatter userFormatter,
     UserManagerWrapper userManagerWrapper,
     CommonConstants commonConstants,
     IOptionsMonitor <ILog> option,
     TimeZonesProvider timeZonesProvider,
     TimeZoneConverter timeZoneConverter)
 {
     Configuration         = configuration;
     SecurityContext       = securityContext;
     TenantManager         = tenantManager;
     SettingsManager       = settingsManager;
     ApiSystemHelper       = apiSystemHelper;
     CommonMethods         = commonMethods;
     HostedSolution        = hostedSolution;
     CoreSettings          = coreSettings;
     TenantDomainValidator = tenantDomainValidator;
     UserFormatter         = userFormatter;
     UserManagerWrapper    = userManagerWrapper;
     CommonConstants       = commonConstants;
     TimeZonesProvider     = timeZonesProvider;
     TimeZoneConverter     = timeZoneConverter;
     Log = option.Get("ASC.ApiSystem");
 }
Example #3
0
 public ConfigureDbTenantService(
     TenantDomainValidator tenantDomainValidator,
     DbContextManager <TenantDbContext> dbContextManager)
 {
     TenantDomainValidator = tenantDomainValidator;
     DbContextManager      = dbContextManager;
 }
 public RegistrationController(
     CommonMethods commonMethods,
     CommonConstants commonConstants,
     IOptionsSnapshot <HostedSolution> hostedSolution,
     TimeZonesProvider timeZonesProvider,
     TimeZoneConverter timeZoneConverter,
     ApiSystemHelper apiSystemHelper,
     SecurityContext securityContext,
     TenantManager tenantManager,
     SettingsManager settingsManager,
     CoreSettings coreSettings,
     TenantDomainValidator tenantDomainValidator,
     UserFormatter userFormatter,
     UserManagerWrapper userManagerWrapper,
     IConfiguration configuration,
     IOptionsMonitor <ILog> option,
     PasswordHasher passwordHasher)
 {
     CommonMethods         = commonMethods;
     CommonConstants       = commonConstants;
     HostedSolution        = hostedSolution.Value;
     TimeZonesProvider     = timeZonesProvider;
     TimeZoneConverter     = timeZoneConverter;
     ApiSystemHelper       = apiSystemHelper;
     SecurityContext       = securityContext;
     TenantManager         = tenantManager;
     SettingsManager       = settingsManager;
     CoreSettings          = coreSettings;
     TenantDomainValidator = tenantDomainValidator;
     UserFormatter         = userFormatter;
     UserManagerWrapper    = userManagerWrapper;
     Configuration         = configuration;
     PasswordHasher        = passwordHasher;
     Log = option.Get("ASC.ApiSystem");
 }
Example #5
0
        public HostedSolution(
            IConfiguration configuration,
            ConnectionStringSettings connectionString,
            TariffServiceStorage tariffServiceStorage,
            IOptionsMonitor <ILog> options,
            TenantUtil tenantUtil,
            TenantDomainValidator tenantDomainValidator,
            TenantDbContext tenantDbContext,
            UserDbContext userDbContext,
            CoreDbContext coreDbContext,
            string region)
        {
            tenantService = new DbTenantService(tenantDbContext, tenantDomainValidator);
            var baseSettings = new CoreBaseSettings(configuration);

            coreSettings = new CoreSettings(tenantService, baseSettings, configuration);

            userService         = new EFUserService(userDbContext);
            quotaService        = new DbQuotaService(coreDbContext);
            tariffService       = new TariffService(quotaService, tenantService, baseSettings, coreSettings, configuration, coreDbContext, tariffServiceStorage, options);
            clientTenantManager = new TenantManager(tenantService, quotaService, tariffService, null, baseSettings, coreSettings);
            settingsManager     = new DbSettingsManager(connectionString);
            TenantUtil          = tenantUtil;
            Region = region ?? string.Empty;
        }
Example #6
0
        private void ValidateDomain(IDbManager db, string domain, int tenantId, bool validateCharacters)
        {
            // size
            TenantDomainValidator.ValidateDomainLength(domain);

            // characters
            if (validateCharacters)
            {
                TenantDomainValidator.ValidateDomainCharacters(domain);
            }

            // forbidden or exists
            var exists = false;

            domain = domain.ToLowerInvariant();
            if (!exists)
            {
                if (forbiddenDomains == null)
                {
                    forbiddenDomains = ExecList(new SqlQuery("tenants_forbiden").Select("address")).Select(r => (string)r[0]).ToList();
                }
                exists = tenantId != 0 && forbiddenDomains.Contains(domain);
            }
            if (!exists)
            {
                exists = 0 < db.ExecuteScalar <int>(new SqlQuery("tenants_tenants").SelectCount().Where(Exp.Eq("alias", domain) & !Exp.Eq("id", tenantId)));
            }
            if (!exists)
            {
                exists = 0 < db.ExecuteScalar <int>(new SqlQuery("tenants_tenants").SelectCount()
                                                    .Where(Exp.Eq("mappeddomain", domain) & !Exp.Eq("id", tenantId) & !Exp.In("status", new [] { (int)TenantStatus.RemovePending, (int)TenantStatus.Restoring })));
            }
            if (exists)
            {
                // cut number suffix
                while (true)
                {
                    if (6 < domain.Length && char.IsNumber(domain, domain.Length - 1))
                    {
                        domain = domain.Substring(0, domain.Length - 1);
                    }
                    else
                    {
                        break;
                    }
                }

                var q = new SqlQuery("tenants_forbiden").Select("address").Where(Exp.Like("address", domain, SqlLike.StartWith))
                        .Union(new SqlQuery("tenants_tenants").Select("alias").Where(Exp.Like("alias", domain, SqlLike.StartWith) & !Exp.Eq("id", tenantId)))
                        .Union(new SqlQuery("tenants_tenants").Select("mappeddomain")
                               .Where(Exp.Like("mappeddomain", domain, SqlLike.StartWith) & !Exp.Eq("id", tenantId) & !Exp.Eq("status", (int)TenantStatus.RemovePending)));

                var existsTenants = db.ExecuteList(q).ConvertAll(r => (string)r[0]);
                throw new TenantAlreadyExistsException("Address busy.", existsTenants);
            }
        }
Example #7
0
 public DbTenantService(
     DbContextManager <TenantDbContext> dbContextManager,
     TenantDomainValidator tenantDomainValidator,
     MachinePseudoKeys machinePseudoKeys)
     : this()
 {
     TenantDbContext       = dbContextManager.Value;
     TenantDomainValidator = tenantDomainValidator;
     MachinePseudoKeys     = machinePseudoKeys;
 }
Example #8
0
 public HostedSolution(
     IConfiguration configuration,
     TenantDomainValidator tenantDomainValidator,
     TimeZoneConverter timeZoneConverter,
     DbRegistry dbRegistry,
     ConnectionStringSettings connectionString,
     TariffServiceStorage tariffServiceStorage,
     IOptionsMonitor <ILog> options)
     : this(configuration, tenantDomainValidator, timeZoneConverter, dbRegistry, connectionString, tariffServiceStorage, options, null)
 {
 }
Example #9
0
 public HostedSolution(
     IConfiguration configuration,
     ConnectionStringSettings connectionString,
     TariffServiceStorage tariffServiceStorage,
     IOptionsMonitor <ILog> options,
     TenantUtil tenantUtil,
     TenantDomainValidator tenantDomainValidator,
     TenantDbContext tenantDbContext,
     UserDbContext userDbContext,
     CoreDbContext coreDbContext)
     : this(configuration, connectionString, tariffServiceStorage, options, tenantUtil, tenantDomainValidator, tenantDbContext, userDbContext, coreDbContext, null)
 {
 }
        private void ValidateDomain(string domain)
        {
            // size
            TenantDomainValidator.ValidateDomainLength(domain);
            // characters
            TenantDomainValidator.ValidateDomainCharacters(domain);

            var sameAliasTenants = ApiSystemHelper.FindTenantsInCache(domain, SecurityContext.CurrentAccount.ID);

            if (sameAliasTenants != null)
            {
                throw new TenantAlreadyExistsException("Address busy.", sameAliasTenants);
            }
        }
 public MultiRegionHostedSolution(string dbid,
                                  IConfiguration configuraion,
                                  CookieStorage cookieStorage,
                                  EFLoggerFactory loggerFactory,
                                  TariffServiceStorage tariffServiceStorage,
                                  IOptionsMonitor <ILog> options,
                                  TenantUtil tenantUtil,
                                  TenantDomainValidator tenantDomainValidator)
 {
     this.dbid            = dbid;
     Configuraion         = configuraion;
     CookieStorage        = cookieStorage;
     LoggerFactory        = loggerFactory;
     TariffServiceStorage = tariffServiceStorage;
     Options               = options;
     TenantUtil            = tenantUtil;
     TenantDomainValidator = tenantDomainValidator;
     Initialize();
 }
Example #12
0
        private void ValidateDomain(string domain, int tenantId, bool validateCharacters)
        {
            // size
            TenantDomainValidator.ValidateDomainLength(domain);

            // characters
            if (validateCharacters)
            {
                TenantDomainValidator.ValidateDomainCharacters(domain);
            }

            // forbidden or exists
            var exists = false;

            domain = domain.ToLowerInvariant();
            if (!exists)
            {
                if (forbiddenDomains == null)
                {
                    forbiddenDomains = TenantDbContext.TenantForbiden.Select(r => r.Address).ToList();
                }
                exists = tenantId != 0 && forbiddenDomains.Contains(domain);
            }
            if (!exists)
            {
                exists = 0 < TenantDbContext.Tenants.Where(r => r.Alias == domain && r.Id != tenantId).Count();
            }
            if (!exists)
            {
                exists = 0 < TenantDbContext.Tenants
                         .Where(r => r.MappedDomain == domain && r.Id != tenantId && !(r.Status == TenantStatus.RemovePending || r.Status == TenantStatus.Restoring))
                         .Count();
            }
            if (exists)
            {
                // cut number suffix
                while (true)
                {
                    if (6 < domain.Length && char.IsNumber(domain, domain.Length - 1))
                    {
                        domain = domain[0..^ 1];
Example #13
0
 public MultiRegionHostedSolution(string dbid,
                                  IConfiguration configuraion,
                                  TenantDomainValidator tenantDomainValidator,
                                  TimeZoneConverter timeZoneConverter,
                                  CookieStorage cookieStorage,
                                  DbRegistry dbRegistry,
                                  DbOptionsManager dbOptions,
                                  TariffServiceStorage tariffServiceStorage,
                                  IOptionsMonitor <ILog> options)
 {
     this.dbid             = dbid;
     Configuraion          = configuraion;
     TenantDomainValidator = tenantDomainValidator;
     TimeZoneConverter     = timeZoneConverter;
     CookieStorage         = cookieStorage;
     DbRegistry            = dbRegistry;
     DbOptions             = dbOptions;
     TariffServiceStorage  = tariffServiceStorage;
     Options = options;
     Initialize();
 }
Example #14
0
        //TODO:fix
        public HostedSolution(
            IConfiguration configuration,
            TenantDomainValidator tenantDomainValidator,
            TimeZoneConverter timeZoneConverter,
            DbRegistry dbRegistry,
            ConnectionStringSettings connectionString,
            TariffServiceStorage tariffServiceStorage,
            IOptionsMonitor <ILog> options,
            string region)
        {
            tenantService = new DbTenantService(null, null, null);
            var baseSettings = new CoreBaseSettings(configuration);

            coreSettings = new CoreSettings(tenantService, baseSettings, configuration);

            userService         = new DbUserService(null);
            quotaService        = new DbQuotaService(null);
            tariffService       = new TariffService(quotaService, tenantService, baseSettings, coreSettings, configuration, null, tariffServiceStorage, options);
            clientTenantManager = new TenantManager(tenantService, quotaService, tariffService, null, baseSettings, coreSettings);
            settingsManager     = new DbSettingsManager(connectionString);
            Region = region ?? string.Empty;
            DbId   = connectionString.Name;
        }
Example #15
0
 public DbTenantService(DbContextManager <TenantDbContext> dbContextManager, TenantDomainValidator tenantDomainValidator) : this()
 {
     TenantDbContext       = dbContextManager.Value;
     TenantDomainValidator = tenantDomainValidator;
 }
Example #16
0
 public DbTenantService(TenantDbContext dbContextManager, TenantDomainValidator tenantDomainValidator) : this(tenantDomainValidator)
 {
     TenantDbContext = dbContextManager;
 }
Example #17
0
 public DbTenantService(DbOptionsManager dbOptionsManager, TenantDomainValidator tenantDomainValidator, TimeZoneConverter timeZoneConverter)
     : base(dbOptionsManager, null)
 {
     TenantDomainValidator = tenantDomainValidator;
     TimeZoneConverter     = timeZoneConverter;
 }