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; }
public static void RefreshKeys(string metadataLocation) { IssuingAuthority issuingAuthority = ValidatingIssuerNameRegistry.GetIssuingAuthority(metadataLocation); bool newKeys = false; foreach (string thumbprint in issuingAuthority.Thumbprints) { if (!ContainsKey(thumbprint)) { newKeys = true; break; } } if (newKeys) { using (TenantDbContext context = new TenantDbContext()) { context.IssuingAuthorityKeys.RemoveRange(context.IssuingAuthorityKeys); foreach (string thumbprint in issuingAuthority.Thumbprints) { context.IssuingAuthorityKeys.Add(new IssuingAuthorityKey { Id = thumbprint }); } context.SaveChanges(); } } }
public void SetTenantSettings(int tenant, string key, byte[] data) { using var tx = TenantDbContext.Database.BeginTransaction(); if (data == null || data.Length == 0) { var settings = TenantDbContext.CoreSettings .Where(r => r.Tenant == tenant) .Where(r => r.Id == key) .FirstOrDefault(); if (settings != null) { TenantDbContext.CoreSettings.Remove(settings); } } else { var settings = new DbCoreSettings { Id = key, Tenant = tenant, Value = data }; TenantDbContext.CoreSettings.Add(settings); } TenantDbContext.SaveChanges(); tx.Commit(); }
static void Data_Seeding_Tenants(TenantDbContext tenantDbContext) { if (!tenantDbContext.Tenants.Any()) { var tenant = new AppTenant() { CacheDuration = 600, CreateDate = DateTime.UtcNow, IdentityServerIssuerUri = Tenant.IdentityServerIssuerUri, LastUpdateTime = DateTime.UtcNow, Name = Tenant.Name, OwnerUserId = AppConstant.seedUserId, //默认设置为1 Status = TenantStatus.Enable, Theme = "default" }; tenant.Hosts.Add(new AppTenantHost() { HostName = Tenant.AppHostName }); tenant.Properties.AddRange(Tenant.TenantProperties.Select(x => new AppTenantProperty() { Key = x.Key, Value = x.Value })); tenantDbContext.Tenants.Add(tenant); tenantDbContext.SaveChanges(); } }
public void RemoveTenant(int id, bool auto = false) { var postfix = auto ? "_auto_deleted" : "_deleted"; using var tx = TenantDbContext.Database.BeginTransaction(); var alias = TenantDbContext.Tenants .Where(r => r.Id == id) .Select(r => r.Alias) .FirstOrDefault(); var count = TenantDbContext.Tenants .Where(r => r.Alias.StartsWith(alias + postfix)) .Count(); var tenant = TenantDbContext.Tenants.Where(r => r.Id == id).FirstOrDefault(); if (tenant != null) { tenant.Alias = alias + postfix + (count > 0 ? count.ToString() : ""); tenant.Status = TenantStatus.RemovePending; tenant.StatusChanged = DateTime.UtcNow; tenant.LastModified = DateTime.UtcNow; } TenantDbContext.SaveChanges(); tx.Commit(); }
public static void RefreshKeys(string metadataLocation) { IssuingAuthority issuingAuthority = ValidatingIssuerNameRegistry.GetIssuingAuthority(metadataLocation); bool newKeys = false; bool refreshTenant = false; foreach (string thumbprint in issuingAuthority.Thumbprints) { if (!ContainsKey(thumbprint)) { newKeys = true; refreshTenant = true; break; } } foreach (string issuer in issuingAuthority.Issuers) { if (!ContainsTenant(GetIssuerId(issuer))) { refreshTenant = true; break; } } if (newKeys || refreshTenant) { using (TenantDbContext context = new TenantDbContext()) { if (newKeys) { context.IssuingAuthorityKeys.RemoveRange(context.IssuingAuthorityKeys); foreach (string thumbprint in issuingAuthority.Thumbprints) { context.IssuingAuthorityKeys.Add(new IssuingAuthorityKey { Id = thumbprint }); } } if (refreshTenant) { // Add the default tenant to the registry. // Comment or remove the following code if you do not wish to have the default tenant use the application. foreach (string issuer in issuingAuthority.Issuers) { string issuerId = GetIssuerId(issuer); if (!ContainsTenant(issuerId)) { context.Tenants.Add(new Tenant { Id = issuerId }); } } } context.SaveChanges(); } } }
public UserController( UserDbContext _db, RedisService _redis, IStringLocalizer <UserController> _localizer, ISmsSender _sms, EmailService _email, UserManager <AppUser> _userManager, TenantDbContext _tenantDbContext, ConfigurationDbContext _configDbContext, IDataProtectionProvider _provider, TenantService _tenantService, IdentityServer4MicroServiceOptions _ismsOptions) { // 多语言 l = _localizer; db = _db; redis = _redis; sms = _sms; email = _email; userManager = _userManager; tenantDbContext = _tenantDbContext; configDbContext = _configDbContext; protector = _provider.CreateProtector(GetType().FullName).ToTimeLimitedDataProtector(); tenantService = _tenantService; ismsOptions = _ismsOptions; }
public static bool TryAddTenant(string tenantId, string signupToken) { if (!ContainsTenant(tenantId)) { using (TenantDbContext context = new TenantDbContext()) { if (tenantId == signupToken) { context.Tenants.Add(new TenantRegistrationModels.Tenant { Id = tenantId }); context.SaveChanges(); return(true); } else { TenantRegistrationModels.SignupToken existingToken = context.SignupTokens.Where(token => token.Id == signupToken).FirstOrDefault(); if (existingToken != null) { context.SignupTokens.Remove(existingToken); context.Tenants.Add(new TenantRegistrationModels.Tenant { Id = tenantId }); context.SaveChanges(); return(true); } } } } return(false); }
public static bool ContainsTenant(string tenantId) { using (TenantDbContext context = new TenantDbContext()) { return(context.Tenants.Where(tenant => tenant.Id == tenantId).Any()); } }
public AccountController( IIdentityServerInteractionService interaction, IHttpContextAccessor httpContextAccessor, UserManager <AppUser> userManager, SignInManager <AppUser> signInManager, EmailService emailSender, ISmsSender smsSender, IdentityDbContext userContext, ConfigurationDbContext configDbContext, TenantService _tenantService, TenantDbContext _tenantDb, ILogger <AccountController> _logger) { _userManager = userManager; _signInManager = signInManager; _emailSender = emailSender; _smsSender = smsSender; _account = new AccountService(interaction, httpContextAccessor); _userContext = userContext; _configDbContext = configDbContext; tenantService = _tenantService; tenantDb = _tenantDb; logger = _logger; }
public ValuesController(TenantDbContext tenantDbContext, IHttpContextAccessor httpContextAccessor) { _tenantDbContext = tenantDbContext; if (httpContextAccessor.HttpContext != null) { _tenant = (Tenant)httpContextAccessor.HttpContext.Items["TENANT"]; } }
public TenantService( TenantDbContext context, ILogger <TenantService> logger ) { _context = context; _logger = logger; }
public static bool ContainsKey(string thumbprint) { using (TenantDbContext context = new TenantDbContext()) { return(context.IssuingAuthorityKeys .Where(key => key.Id == thumbprint) .Any()); } }
public DataBaseTenantProvider(TenantDbContext context, IHttpContextAccessor httpContextAccessor) { var host = httpContextAccessor.HttpContext?.Request.Host.Value; if (!string.IsNullOrEmpty(host)) { _tenantId = context.Tenants.First(f => f.Host.Equals(host)).Id; } }
public BaseController(IHttpContextAccessor httpContext, ITenantDbFactory dbFactory) { Tenant = httpContext.HttpContext.GetTenant(); if (Tenant != null) { Context = dbFactory.GetTenantDatabase(Tenant.DbName); } }
public CustomerService( IDbContextFactory <TenantDbContext, int> tenantDbContextFactory, IScopedCache scopedCache, IMapper mapper) { _scopedCache = scopedCache; _mapper = mapper; _tenantDbContext = tenantDbContextFactory.Create(_scopedCache.TenantId); }
public DataController(ILogger <DataController> logger, TenantDbContext tenantDbContext, IDatabaseRepository databaseRepository, IHttpContextAccessor httpContextAccessor) { _logger = logger; _tenantDbContext = tenantDbContext; if (httpContextAccessor.HttpContext != null) { _tenant = (Tenant)httpContextAccessor.HttpContext.Items["TENANT"]; _databaseRepository = new DatabaseRepository(_tenantDbContext); } }
public TenantDatabaseInitializer( //int tenantId, TenantDbContext context, //NOTE: get specific context (string tenantName), IAccountManager accountManager, ILogger <TenantDatabaseInitializer> logger) { _accountManager = accountManager; _context = context; //_context = new TenantDbContext(tenantId); _logger = logger; }
public IActionResult Index() { using (var ctx = new TenantDbContext(_httpContextAccessor, _tenantHelper)) { ViewBag.Orders = ctx.Orders.ToList(); //ViewBag.Orders = _orderRepository.GetAll().ToList(); } return(View()); }
public ToolController( ILogger <ConsentController> _logger, IStringLocalizer <ToolController> _l, TenantService _tenantService, TenantDbContext _tenantDb) { tenantService = _tenantService; tenantDb = _tenantDb; logger = _logger; l = _l; }
public void TenancyQueryTest() { var tenantId = 1; using (TenantDbContext.ContextCreated.OfType <TenantDbContext>().Subscribe(db => db.TenantId = tenantId)) { tenantId = 1; using (var db = new TenantDbContext()) { db.Items.Add(new TestItem { Description = "1" }); db.SaveChanges(); } tenantId = 2; using (var db = new TenantDbContext()) { db.Items.Add(new TestItem { Description = "2" }); db.SaveChanges(); } tenantId = 1; using (var db = new TenantDbContext()) { var e = db.Items.ToList().First(); e.Should().NotBeNull("Item 1 not found"); e.Description.Should().Be("1"); e.TenantId.Should().Be(1); } tenantId = 2; using (var db = new TenantDbContext()) { var e = db.Items.ToList().First(); e.Should().NotBeNull("Item 2 not found"); e.Description.Should().Be("2"); e.TenantId.Should().Be(2); } using (var db = new TenantDbContext()) { db .Items .IgnoreQueryFilters() .ToList() .Count .Should() .Be(2); } } }
public static void AddSignupToken(string signupToken, DateTimeOffset expirationTime) { using (TenantDbContext context = new TenantDbContext()) { context.SignupTokens.Add(new SignupToken { Id = signupToken, ExpirationDate = expirationTime }); context.SaveChanges(); } }
public ConsentController( IIdentityServerInteractionService interaction, IClientStore clientStore, IResourceStore resourceStore, ILogger <ConsentController> logger, TenantService _tenantService, TenantDbContext _tenantDb) { _consent = new ConsentService(interaction, clientStore, resourceStore, logger); tenantService = _tenantService; tenantDb = _tenantDb; }
public HomeController( IStringLocalizer <HomeController> _l, TenantService _tenantService, TenantDbContext _tenantDb, SignInManager <AppUser> _signInManager ) { l = _l; tenantService = _tenantService; tenantDb = _tenantDb; signInManager = _signInManager; }
public TenantController( TenantDbContext _db, RedisService _redis, IStringLocalizer <TenantController> _localizer, TenantService _tenantService ) { // 多语言 l = _localizer; redis = _redis; tenantDb = _db; tenantService = _tenantService; }
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) { }
/// <summary> /// Handle /// </summary> /// <returns></returns> public Response Handle() { _query.Query(_dbContext).All().ForEach((connection) => { var optionBuilder = new DbContextOptionsBuilder <TenantDbContext>(); optionBuilder.UseSqlServer(connection.ConnectionString); var dbContext = new TenantDbContext(optionBuilder.Options); RelationalDatabaseFacadeExtensions.Migrate(dbContext.Database); }); return(new Response()); }
public static void RefreshKeys(string metadataLocation) { var issuingAuthority = GetIssuingAuthority(metadataLocation); var newKeys = false; var refreshTenant = false; if (issuingAuthority.Thumbprints.Any(thumbprint => !ContainsKey(thumbprint))) { newKeys = true; refreshTenant = true; } if (issuingAuthority.Issuers.Any(issuer => !ContainsTenant(GetIssuerId(issuer)))) { refreshTenant = true; } if (!newKeys && !refreshTenant) { return; } using (var context = new TenantDbContext()) { if (newKeys) { context.IssuingAuthorityKeys.RemoveRange(context.IssuingAuthorityKeys); foreach (var thumbprint in issuingAuthority.Thumbprints) { context.IssuingAuthorityKeys.Add(new IssuingAuthorityKey { Id = thumbprint }); } } if (refreshTenant) { foreach (var issuer in issuingAuthority.Issuers) { var issuerId = GetIssuerId(issuer); if (!ContainsTenant(issuerId)) { context.Tenants.Add(new Tenant { Id = issuerId }); } } } context.SaveChanges(); } }
public static void CleanUpExpiredSignupTokens() { DateTimeOffset now = DateTimeOffset.UtcNow; using (TenantDbContext context = new TenantDbContext()) { IQueryable <SignupToken> tokensToRemove = context.SignupTokens.Where(token => token.ExpirationDate <= now); if (tokensToRemove.Any()) { context.SignupTokens.RemoveRange(tokensToRemove); context.SaveChanges(); } } }
public void SaveTest() { using (TenantDbContext.ContextCreated.OfType <TenantDbContext>().Subscribe(db => db.TenantId = 1)) { using (var db = new TenantDbContext()) { var entry = db.Items.Add(new TestItem { Description = "Test" }); db.SaveChanges(); entry.Entity.TenantId.Should().Be(1); } } }