public async IAsyncEnumerable <MailMergeMessage> GetMailMergeMessages(ITenantContext tenantContext, ITemplateRenderer renderer, IMailMergeService mailMergeService, IStringLocalizer <EmailResource> localizer, [EnumeratorCancellation] CancellationToken cancellationToken) { if (Parameters.Email is null || Parameters.NewEmail is null || Parameters.CallbackUrl is null || Parameters.DeadlineUtc is null) { throw new ArgumentNullException(nameof(Parameters), "One or more required parameters are null"); } { using var cs = new CultureSwitcher(Parameters.CultureInfo, Parameters.CultureInfo); // First email goes to the new email address var model = new ChangeUserAccountModel() { Email = Parameters.NewEmail, CallbackUrl = Parameters.CallbackUrl, Deadline = Parameters.DeadlineUtc }; var mailMergeMessage = mailMergeService.CreateStandardMessage(); mailMergeMessage.EnableFormatter = false; mailMergeMessage.Subject = localizer["Please confirm your new primary email"].Value; mailMergeMessage.MailMergeAddresses.Add(new MailMergeAddress(MailAddressType.From, tenantContext.SiteContext.Email.GeneralFrom.DisplayName, tenantContext.SiteContext.Email.GeneralFrom.Address)); mailMergeMessage.MailMergeAddresses.Add(new MailMergeAddress(MailAddressType.To, Parameters.NewEmail)); mailMergeMessage.PlainText = await renderer.RenderAsync(TemplateName.ConfirmNewPrimaryEmailTxt, model, Parameters.CultureInfo.TwoLetterISOLanguageName); mailMergeMessage.HtmlText = await renderer.RenderAsync(TemplateName.ConfirmNewPrimaryEmailHtml, model, Parameters.CultureInfo.TwoLetterISOLanguageName); yield return(mailMergeMessage); // Second email goes to the current email address model = new ChangeUserAccountModel() { Email = Parameters.NewEmail, CallbackUrl = string.Empty, // not used in the template Deadline = null // not used in the template }; mailMergeMessage = mailMergeService.CreateStandardMessage(); mailMergeMessage.EnableFormatter = false; mailMergeMessage.Subject = localizer["Your primary email is about to be changed"].Value; mailMergeMessage.MailMergeAddresses.Add(new MailMergeAddress(MailAddressType.From, tenantContext.SiteContext.Email.GeneralFrom.DisplayName, tenantContext.SiteContext.Email.GeneralFrom.Address)); mailMergeMessage.MailMergeAddresses.Add(new MailMergeAddress(MailAddressType.To, Parameters.Email)); mailMergeMessage.PlainText = await renderer.RenderAsync(TemplateName.NotifyCurrentPrimaryEmailTxt, model, Parameters.CultureInfo.TwoLetterISOLanguageName); mailMergeMessage.HtmlText = await renderer.RenderAsync(TemplateName.NotifyCurrentPrimaryEmailHtml, model, Parameters.CultureInfo.TwoLetterISOLanguageName); yield return(mailMergeMessage); } }
public UnitTestHelpers() { _configPath = DirectoryLocator.GetTargetConfigurationPath(); var msSqlPath = Path.Combine(DirectoryLocator.GetTargetProjectPath(typeof(Program)), @"..\..\MsSqlDb"); // For the unit tests we _tenantContext = new TenantContext { DbContext = { Catalog = "LeagueIntegration", Schema = "dbo", ConnectionKey = "dummy" } }; _tenantContext.DbContext.ConnectionString = $"Server=(LocalDB)\\MSSQLLocalDB;AttachDbFilename={msSqlPath}\\LeagueIntegrationTest.mdf;Database={_tenantContext.DbContext.Catalog};Integrated Security=true"; // Make sure we can connect to the database using (var connection = new Microsoft.Data.SqlClient.SqlConnection(_tenantContext.DbContext.ConnectionString)) try { connection.Open(); } finally { connection.Close(); } InitializeLlBlGenPro(); }
/// <inheritdoc /> public async Task <ExecutionResult> ExecuteAsync(string operationName, string query, Inputs variables, IDictionary <string, object> context, IServiceProvider requestServices, CancellationToken cancellationToken = new CancellationToken()) { ITenantContext tenantContext = null; if (context is GraphQLUserContext userContext) { tenantContext = userContext.TenantContext; } else if (context is MessageHandlingContext messageHandlingContext) { tenantContext = messageHandlingContext.Get <ITenantContext>(Statics.TenantContext); } // Client tried to use an invalid tenant if (tenantContext == null) { return(new ExecutionResult { Errors = new ExecutionErrors { new ExecutionError("Invalid request. Please check your client configuration.") } }); } Schema = await _schemaContext.GetOrCreateAsync(tenantContext); var executer = new DefaultGraphQLExecuter <OspSchema>(Schema, _documentExecuter, _options, _listeners, _validationRules); return(await executer.ExecuteAsync(operationName, query, variables, context, requestServices, cancellationToken)); }
public AccountController( UserSettings userSettings, DateTimeSettings dateTimeSettings, MediaSettings mediaSettings, IAuthenticationService authenticationService, IUserAccountModelFactory userAccountModelFactory, IUserRegistrationService userRegistrationService, IUserService userService, IUserActivityService userActivityService, IGenericAttributeService genericAttributeService, INotificationService notificationService, IWorkContext workContext, ITenantContext tenantContext, IEmailSender emailSender, IPictureService pictureService) { _userSettings = userSettings; _dateTimeSettings = dateTimeSettings; _mediaSettings = mediaSettings; _authenticationService = authenticationService; _userAccountModelFactory = userAccountModelFactory; _userRegistrationService = userRegistrationService; _userService = userService; _userActivityService = userActivityService; _genericAttributeService = genericAttributeService; _notificationService = notificationService; _workContext = workContext; _tenantContext = tenantContext; _emailSender = emailSender; _pictureService = pictureService; }
public HomeNavigationTreeBuilder(ITenantContext tenantContext, ILogger <HomeNavigationTreeBuilder> logger, IStringLocalizer <NavigationResource> localizer, IUrlHelper urlHelper) { _tenantContext = tenantContext; _logger = logger; _localizer = localizer; _urlHelper = urlHelper; }
protected ITenantContext CreateContext() { ITenantContext context = null; foreach (var provider in _providers) { try { context = provider.CreateContext() ?? context; if ((context?.Tenant?.UniqueId ?? DefaultTenantContextProvider.DEFAULT_CONTEXT_ID) != DefaultTenantContextProvider.DEFAULT_CONTEXT_ID) { return(context); } } catch (Exception ex) { _logger.Trace($"Failed to load Tenant Context from Provider {provider.GetType()}: {ex.Message} ({ex.GetType()})"); } } if (context == null) { _logger.Warn($"Failed to load Tenant Context from any Provider!"); } return(context); }
protected override void Context() { _repository = Resolve<ISequenceRepository>(); _tenantContext = Resolve<ITenantContext>(); _tenantContext.SetTenantId(_tenant); }
public TeamValidatorTests() { #region *** Mocks *** var tenantContextMock = TestMocks.GetTenantContextMock(); var appDbMock = TestMocks.GetAppDbMock(); var teamRepoMock = TestMocks.GetRepo <TeamRepository>(); teamRepoMock .Setup(rep => rep.TeamNameExistsAsync(It.IsAny <TeamEntity>(), It.IsAny <CancellationToken>())) .Callback(() => { }).Returns((TeamEntity teamEntity, CancellationToken cancellationToken) => { return(Task.FromResult(teamEntity.Id < 10 ? teamEntity.Name : null)); }); appDbMock.Setup(a => a.TeamRepository).Returns(teamRepoMock.Object); var dbContextMock = TestMocks.GetDbContextMock(); dbContextMock.SetupAppDb(appDbMock); tenantContextMock.SetupDbContext(dbContextMock); _tenantContext = tenantContextMock.Object; _appDb = appDbMock.Object; #endregion }
public static ServiceProvider GetTextTemplatingServiceProvider(ITenantContext tenantContext) { return(new ServiceCollection() .AddLogging(builder => { builder.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace); builder.AddNLog(new NLogProviderOptions { CaptureMessageTemplates = true, CaptureMessageProperties = true }); }) .AddLocalization() .AddSingleton(sp => new Axuno.Tools.DateAndTime.TimeZoneConverter( sp.GetRequiredService <NodaTime.TimeZones.DateTimeZoneCache>(), "Europe/Berlin", CultureInfo.CurrentCulture, NodaTime.TimeZones.Resolvers.LenientResolver)) .AddTransient <ITenantContext>(sp => tenantContext) .AddTextTemplatingModule(vfs => { // The complete Templates folder is embedded in the project file vfs.FileSets.AddEmbedded <Startup>(nameof(League) + ".Templates"); // vfs.FileSets.AddPhysical(Path.Combine(Directory.GetCurrentDirectory(), "Templates")); }, locOpt => { }, renderOptions => { renderOptions.MemberNotFoundAction = RenderErrorAction.ThrowError; renderOptions.VariableNotFoundAction = RenderErrorAction.ThrowError; }) .BuildServiceProvider()); }
public RoleStore(ITenantContext tenantContext, ILogger <UserStore> logger, ILookupNormalizer keyNormalizer, IdentityErrorDescriber identityErrorDescriber) { _appDb = tenantContext.DbContext.AppDb; _logger = logger; _keyNormalizer = keyNormalizer; _identityErrorDescriber = identityErrorDescriber as MultiLanguageIdentityErrorDescriber; }
public Error(ILogger <Error> logger, IStringLocalizer <Error> localizer, IWebHostEnvironment environment, ITenantContext tenantContext) { _logger = logger; _environment = environment; _tenantContext = tenantContext; _localizer = localizer; }
public async IAsyncEnumerable <MailMergeMessage> GetMailMergeMessages(ITenantContext tenantContext, ITemplateRenderer renderer, IMailMergeService mailMergeService, IStringLocalizer <EmailResource> localizer, [EnumeratorCancellation] CancellationToken cancellationToken) { if (Parameters.Email is null || Parameters.Subject is null || Parameters.CallbackUrl is null || Parameters.TemplateNameTxt is null || Parameters.TemplateNameHtml is null || Parameters.DeadlineUtc is null) { throw new ArgumentNullException(nameof(Parameters), "One or more required parameters are null"); } var model = new ChangeUserAccountModel() { Email = Parameters.Email, CallbackUrl = Parameters.CallbackUrl, Deadline = Parameters.DeadlineUtc }; { using var cs = new CultureSwitcher(Parameters.CultureInfo, Parameters.CultureInfo); var mailMergeMessage = mailMergeService.CreateStandardMessage(); mailMergeMessage.EnableFormatter = false; mailMergeMessage.Subject = Parameters.Subject; // already localized mailMergeMessage.MailMergeAddresses.Add(new MailMergeAddress(MailAddressType.From, tenantContext.SiteContext.Email.GeneralFrom.DisplayName, tenantContext.SiteContext.Email.GeneralFrom.Address)); mailMergeMessage.MailMergeAddresses.Add(new MailMergeAddress(MailAddressType.To, Parameters.Email)); mailMergeMessage.PlainText = await renderer.RenderAsync(Parameters.TemplateNameTxt, model, Parameters.CultureInfo.TwoLetterISOLanguageName); mailMergeMessage.HtmlText = await renderer.RenderAsync(Parameters.TemplateNameHtml, model, Parameters.CultureInfo.TwoLetterISOLanguageName); yield return(mailMergeMessage); } }
/// <summary> /// Constructor /// </summary> /// <param name="tenantContext"></param> public GraphTypesCache(ITenantContext tenantContext) { _tenantContext = tenantContext; _types = new ConcurrentDictionary <string, RtEntityDtoType>(); _inputTypes = new ConcurrentDictionary <string, RtEntityDtoInputType>(); _connectionTypes = new ConcurrentDictionary <IGraphType, DynamicConnectionType>(); }
public TenantRepositoryFilterTests() { tenantContext = Substitute.For <ITenantContext>(); entities.AddRange(new[] { new TestEntity() { Id = Guid.NewGuid(), TenantId = null }, new TestEntity() { Id = Guid.NewGuid(), TenantId = tenantId1 }, new TestEntity() { Id = Guid.NewGuid(), TenantId = tenantId2 } }); entitiesUnfiltered.AddRange(new[] { new TestEntity2() { Id = Guid.NewGuid() } }); tenant = Substitute.For <ITenant>(); sut = new TenantRepositoryFilter(tenantContext); }
public async IAsyncEnumerable <MailMergeMessage> GetMailMergeMessages(ITenantContext tenantContext, ITemplateRenderer renderer, IMailMergeService mailMergeService, IStringLocalizer <EmailResource> localizer, [EnumeratorCancellation] CancellationToken cancellationToken) { if (Parameters.ContactForm is null) { throw new ArgumentNullException(nameof(Parameters.ContactForm), "One or more required parameters are null"); } var model = new { Form = Parameters.ContactForm }; { using var cs = new CultureSwitcher(Parameters.CultureInfo, Parameters.CultureInfo); var mailMergeMessage = mailMergeService.CreateStandardMessage(); mailMergeMessage.EnableFormatter = false; mailMergeMessage.Subject = model.Form.Subject; // user-generated, cannot localize! mailMergeMessage.MailMergeAddresses.Add(new MailMergeAddress(MailAddressType.From, tenantContext.SiteContext.Email.ContactFrom.Address)); mailMergeMessage.MailMergeAddresses.Add(new MailMergeAddress(MailAddressType.To, tenantContext.SiteContext.Email.ContactTo.Address)); mailMergeMessage.PlainText = await renderer.RenderAsync(Templates.Email.TemplateName.ContactFormTxt, model, Parameters.CultureInfo.TwoLetterISOLanguageName); yield return(mailMergeMessage); } }
/// <summary> /// CTOR. /// </summary> /// <param name="webHostEnvironment"></param> /// <param name="tenantContext"></param> /// <param name="logger"></param> public TeamPhotoStaticFile(IWebHostEnvironment webHostEnvironment, ITenantContext tenantContext, ILogger <TeamPhotoStaticFile> logger) : base(logger) { _webHostEnvironment = webHostEnvironment; _tenantContext = tenantContext; _logger = logger; _folder = _tenantContext.SiteContext.Photos.TeamPhotoFolder; }
private void SetMostRecentTenantCookie(ITenantContext tenant) { if (_httpContext == null) { return; } if (tenant.SiteContext.UrlSegmentValue == string.Empty) { _httpContext.Response.Cookies.Delete(CookieNames.MostRecentTenant); } _httpContext.Response.Cookies.Append( CookieNames.MostRecentTenant, tenant.SiteContext.UrlSegmentValue, new CookieOptions { Path = "/", HttpOnly = false, Secure = false, Expires = DateTimeOffset.Now.AddYears(1), IsEssential = true } ); }
public virtual ITenantContext GetTenantContext() { if (_tenantContext == null) { _tenantContext = CreateTenantContext(); } return(_tenantContext); }
protected override void Context() { _handler = Resolve<ClientHandlers>(); _clientRepository = Resolve<IClientRepository>(); _tenantContext = Resolve<ITenantContext>(); _tenantContext.SetTenantId(_tenant); }
private int expiresInMinutes = 5 * 60; //5 hrs public UserService(IUserRepository userRepository, ITenantRepository tenantRepository, ITenantContext tenantContext) { _userRepository = userRepository; _tenantRepository = tenantRepository; _tenant = tenantContext.GetTenant(); }
protected override void Context() { _timeregistrationHandler = Resolve<TimeRegistrationHandlers>(); _timeregistrationRepository = Resolve<ITimeRegistrationRepository>(); _tenantContext = Resolve<ITenantContext>(); _tenantContext.SetTenantId(_tenant); }
public SendEmailTask(IMailMergeService mailMergeService, ITemplateRenderer renderer, ITenantContext tenantContext, IStringLocalizer <EmailResource> localizer, ILogger <SendEmailTask> logger) { _mailMergeService = mailMergeService; _renderer = renderer; _localizer = localizer; _tenantContext = tenantContext; _logger = logger; }
public virtual async Task <ITenantContext> GetTenantContextAsync(CancellationToken cancellationToken = default) { if (_tenantContext == null) { _tenantContext = await CreateTenantContextAsync(cancellationToken); } return(_tenantContext); }
public UserRequiresTwoFactorAuthenticationValidator(ITenantContext tenantContext, IRequireTwoFactorAuthenticationFactory factory) { _tenantContext = tenantContext; _2faRequiredFactory = factory; #if DEBUG _autoEnable = !tenantContext.TenantConfigurations.Get <bool>(Constants.Ignore2faWhileDebugging); #endif }
internal AvailableMatchDates(ITenantContext tenantContext, Axuno.Tools.DateAndTime.TimeZoneConverter timeZoneConverter, ILogger <AvailableMatchDates> logger) { _tenantContext = tenantContext; _appDb = tenantContext.DbContext.AppDb; _timeZoneConverter = timeZoneConverter; _logger = logger; }
protected override void Context() { _projectHandler = Resolve<ProjectHandlers>(); _projectRepository = Resolve<IProjectRepository>(); _tenantContext = Resolve<ITenantContext>(); _tenantContext.SetTenantId(_tenant); }
public Ranking(ITenantContext tenantContext, IWebHostEnvironment webHostEnvironment, IStringLocalizer <Ranking> localizer, ILogger <Ranking> logger, IMemoryCache memoryCache) { _tenantContext = tenantContext; _appDb = tenantContext.DbContext.AppDb; _webHostEnvironment = webHostEnvironment; _logger = logger; _memoryCache = memoryCache; }
protected override void Context() { _repository = Resolve<ISequenceRepository>(); _tenantContext = Resolve<ITenantContext>(); _tenantContext.SetTenantId(_tenant); _repository.Add(new Sequence { Id = _id, Result = "1", Version = 1 }, 1); }
public ApiSettingModelFactory( ISettingService settingService, IClientService clientService, ITenantContext tenantContext) { _settingService = settingService; _clientService = clientService; _tenantContext = tenantContext; }
protected override void Context() { _handler = Resolve<ClientHandlers>(); _clientRepository = Resolve<IClientRepository>(); _tenantContext = Resolve<ITenantContext>(); _tenantContext.SetTenantId(_tenant); _handler.AsDynamic().Handle(new ClientCreated(_id, "John Doe BVBA", DateTime.UtcNow) { Version = 1 }); }
private static RtSystemNotificationMessage CreateRtEntity(NotificationMessageDto notificationMessageDto, ITenantContext tenantContext) { var rtEntity = tenantContext.Repository.CreateTransientRtEntity <RtSystemNotificationMessage>(); ApplyDtoData(notificationMessageDto, rtEntity); return(rtEntity); }
public ByTenantEntityStorage(IEntityStorage <T> inner, ITenantContext context) { _inner = inner; _context = context; if (_context.CurrentTenant == Guid.Empty) { throw new InvalidOperationException(); } }
/// <summary> /// CTOR. /// </summary> /// <param name="tenantContext"></param> /// <param name="timeZoneConverter"></param> /// <param name="loggerFactory"></param> public MatchPlanner(ITenantContext tenantContext, Axuno.Tools.DateAndTime.TimeZoneConverter timeZoneConverter, ILoggerFactory loggerFactory) { _tenantContext = tenantContext; _appDb = tenantContext.DbContext.AppDb; _timeZoneConverter = timeZoneConverter; _availableMatchDates = new AvailableMatchDates(tenantContext, timeZoneConverter, loggerFactory.CreateLogger <AvailableMatchDates>()); _loggerFactory = loggerFactory; _logger = loggerFactory.CreateLogger <MatchPlanner>(); }
public Home(ITenantContext tenantContext, TenantStore tenantStore, Axuno.BackgroundTask.IBackgroundQueue queue, SendEmailTask sendEmailTask, ILogger <Home> logger, IStringLocalizer <Account> localizer) { _tenantContext = tenantContext; _tenantStore = tenantStore; _appDb = _tenantContext.DbContext.AppDb; _queue = queue; _sendEmailTask = sendEmailTask; _logger = logger; _localizer = localizer; _tenantContext = tenantContext; }
protected override void Context() { _bus = Resolve<IServiceBus>(); _sequenceRepository = Resolve<ISequenceRepository>(); _tenantContext = Resolve<ITenantContext>(); _bus.PublishDomainUpdate(new [] { new SequenceNumberAdded(_id, 1) { Version = 1 }}, Metadata(1)); }
public LeagueMemoryTreeCache(IMemoryCache cache, ITenantContext tenantContext, IOptions <TreeCacheOptions> optionsAccessor = null) { _tenantContext = tenantContext; _cache = cache ?? throw new ArgumentNullException(nameof(cache)); _options = optionsAccessor?.Value; if (_options != null) { return; } _options = new TreeCacheOptions(); // TreeCacheOptions contains property CacheDurationInSeconds (defaults to 300) }
protected override void Context() { _clientHandler = Resolve<ClientHandlers>(); _projectHandler = Resolve<ProjectHandlers>(); _projectRepository = Resolve<IProjectRepository>(); _tenantContext = Resolve<ITenantContext>(); _tenantContext.SetTenantId(_tenant); _clientHandler.AsDynamic().Handle(new ClientCreated(_clientId, "John Doe BVBA", DateTime.UtcNow) { Version = 1 }); _projectHandler.AsDynamic().Handle(new ProjectCreated(_projectId, "Project 1", "A test project", _clientId, DateTime.UtcNow) { Version = 1 }); }
public async Task Invoke(HttpContext context, ITenantContext tenantContext) { var tenantHeaderValue = context.Request.Headers[_options.TenantHeaderName].FirstOrDefault(); if (Guid.TryParse(tenantHeaderValue, out var tenantId)) { tenantContext.TenantId = tenantId; } await _next(context); }
protected override void Context() { _clientHandler = Resolve<ClientHandlers>(); _projectHandler = Resolve<ProjectHandlers>(); _projectRepository = Resolve<IProjectRepository>(); _tenantContext = Resolve<ITenantContext>(); _tenantContext.SetTenantId(_tenant); _clientHandler.AsDynamic().Handle(new ClientCreated(_clientId, "John Doe BVBA", DateTime.UtcNow) { Version = 1 }); _projectHandler.AsDynamic().Handle(new ProjectCreated(_projectId, "Project 1", "A test project", _clientId, DateTime.UtcNow) { Version = 1 }); _projectHandler.AsDynamic().Handle(new ProjectTasksChanged(_projectId, new Dtos.Task[] { new Dtos.Task{ Name = "Initial task", Rate = 50M }, }) { Version = 2 }); }
protected override void Context() { _clientHandler = Resolve<ClientHandlers>(); _projectHandler = Resolve<ProjectHandlers>(); _timeregistrationHandler = Resolve<TimeRegistrationHandlers>(); _timeregistrationRepository = Resolve<ITimeRegistrationRepository>(); _tenantContext = Resolve<ITenantContext>(); _tenantContext.SetTenantId(_tenant); _clientHandler.AsDynamic().Handle(new ClientCreated(_clientId, "John Doe BVBA", DateTime.UtcNow) { Version = 1 }); _projectHandler.AsDynamic().Handle(new ProjectCreated(_projectId, "Project 1", "A test project", _clientId, DateTime.UtcNow) { Version = 1 }); _timeregistrationHandler.AsDynamic().Handle(new TimeRegistrationCreated(_timeregistrationId, _clientId, _projectId, "Development", 50M, "Doing some work", Date.Parse("2012-01-30"), Time.Parse("12:00"), Time.Parse("14:00"), DateTime.UtcNow) { Version = 1 }); }
/// <summary> /// Creates a new instance of <see cref="AutomaticDataMigrations"/>. /// </summary> /// <param name="tenantContext">The <see cref="ITenantContext"/>.</param> /// <param name="dataContext">The <see cref="DataContext"/>.</param> public AutomaticDataMigrations(ITenantContext tenantContext, DataContext dataContext) { _tenantContext = tenantContext; _dataContext = dataContext; }
public DomainUpdateServiceBusHandlerHook(IMongoContext mongoContext, ITenantContext tenantContext) { _tenantContext = tenantContext; }
public MultiTenantSessionFactoryKeyProvider(ITenantContext tenantContext) { _tenantContext = tenantContext; }
protected override void Context() { _repository = Resolve<ISequenceRepository>(); _tenantContext = Resolve<ITenantContext>(); _handler = Resolve<SequenceAddNumberHandlers>(); }