public MultiTenantConnectionStringManager(ILog <MultiTenantConnectionStringManager> logger, IConfig <ConnectionConfig> config, ITenantContextAccessor tenantAccessor) { _config = config; _tenantAccessor = tenantAccessor; _logger = logger; }
public TenantMiddleware(ITenantContextAccessor tenantContextAccessor, ITenantIdentificationService tenantIdentificationService, IOptions <TenancyHostingOptions> tenancyOptions, ITenantRepository tenantRepository) { _tenantContextAccessor = tenantContextAccessor; _tenantIdentificationService = tenantIdentificationService; _tenancyOptions = tenancyOptions; _tenantRepository = tenantRepository; }
/// <summary> /// Initializes a new instance with the specified options configurations. /// </summary> /// <param name="setups">The configuration actions to run.</param> /// <param name="postConfigures">The initialization actions to run.</param> public MultiTenantOptionsFactory(IEnumerable <IConfigureOptions <TOptions> > setups, IEnumerable <IPostConfigureOptions <TOptions> > postConfigures, Action <TOptions, TenantContext> tenantConfig, ITenantContextAccessor tenantContextAccessor) { _setups = setups; this.tenantConfig = tenantConfig; this.tenantContextAccessor = tenantContextAccessor; _postConfigures = postConfigures; }
public async Task Invoke(HttpContext context, ITenantIdentificationService tenantIdentificationService, ITenantContextAccessor tenantContextAccessor, ITenantRepository tenantRepository, IOptions <TenancyHostingOptions> tenancyOptions) { if (tenancyOptions.Value.TenancyType == TenancyType.None) { await _next(context); return; } if (tenantContextAccessor.TenantContext != null) { throw new ApplicationException("Tenant context is already set"); } var tenantId = await tenantIdentificationService.GetTenantIdAsync(); var tenant = await tenantRepository.Get(tenantId, context.RequestAborted) ?? throw new ApplicationException($"Tenant {tenantId} not found"); if (tenant.IsShared && tenancyOptions.Value.TenancyType == TenancyType.MonoTenant) { throw new ApplicationException( $"Received a message for shared tenant {tenantId} in a MonoTenant hosting"); } if (!tenant.IsShared && tenancyOptions.Value.TenancyType == TenancyType.MultiTenant) { throw new ApplicationException( $"Received a message for premium tenant {tenantId} in a MultiTenant (shared) context"); } if (tenancyOptions.Value.TenancyType == TenancyType.MonoTenant && tenancyOptions.Value.TenantId != tenantId) { throw new ApplicationException( $"Invalid tenant ID. Expected {tenancyOptions.Value.TenantId} but received {tenantId}"); } tenantContextAccessor.TenantContext = new TenantContext(tenant); await _next(context); }
public TenantContextFlow(ITenantContextAccessor tenantContextAccessor, TenantContext prevContext) { _tenantContextAccessor = tenantContextAccessor; _prevContext = prevContext; }
public MultiTenantConfigurationPipe(ITenantContextAccessor contextAccessor) { _contextAccessor = contextAccessor; }
public AdoNetMultitenantSnapshotRepository(Scripts scripts, ILogger <AdoNetSnapshotRepository> logger, IOptions <EventStoreOptions> eventstoreOptions, ITenantContextAccessor tenantContextAccessor) : base(scripts, logger, eventstoreOptions) { _tenantContextAccessor = tenantContextAccessor; }
public MultiTenantSettingsService(IEnumerable <ISettingsProvider> providers, ITenantContextAccessor contextAccessor) : base(providers) { _contextAccessor = contextAccessor; }
public MultiTenantOptionsCache(ITenantContextAccessor tenantContextAccessor, Action <TOptions, TenantContext> tenantConfig) { this.tenantConfig = tenantConfig ?? throw new ArgumentNullException(nameof(tenantConfig)); this.tenantContextAccessor = tenantContextAccessor ?? throw new ArgumentNullException(nameof(tenantContextAccessor)); }
public WeatherForecastController(ILogger <WeatherForecastController> logger, ITenantContextAccessor tenantContextAccessor) { _logger = logger; _tenantContext = tenantContextAccessor.TenantContext; }
public MultiTenancyMessageBusPublisherDecorator(IMessageBusPublisher inner, ITenantContextAccessor tenantContextAccessor) { _inner = inner; _tenantContextAccessor = tenantContextAccessor; }
public MultiTenantEfUow(TContext dbContext, ITenantContextAccessor tenantContextAccessor, ILogger <MultiTenantEfUow <TEntity, TContext> > logger) { _dbContext = dbContext; _tenantContextAccessor = tenantContextAccessor; _logger = logger; }
public MultiTenantDbContext(DbContextOptions <MultiTenantDbContext> options, ITenantContextAccessor tenantService) : base(options) { _tenantId = tenantService.TenantContext.GetTenantId(); }
public static TenantContextFlow ChangeTenantContext(this ITenantContextAccessor tenantContextAccessor, Tenant tenant) => tenantContextAccessor.ChangeTenantContext(new TenantContext(tenant));