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 static void SetTenant(this HttpContext context, AppTenant tenant) { //Ensure.Argument.NotNull(context, nameof(context)); //Ensure.Argument.NotNull(tenantContext, nameof(tenantContext)); context.Items[TenantKey] = tenant; }
public AccountController( ApplicationDbContext context, UserManager <ApplicationUser> userManager, SignInManager <ApplicationUser> signInManager, RoleManager <Role> roleManager, IOptions <IdentityCookieOptions> identityCookieOptions, IEmailSender emailSender, ISmsSender smsSender, ILoggerFactory loggerFactory, ITenant <AppTenant> tenant) { _userManager = userManager; _signInManager = signInManager; _roleManager = roleManager; _externalCookieScheme = identityCookieOptions.Value.ExternalCookieAuthenticationScheme; _emailSender = emailSender; _smsSender = smsSender; _logger = loggerFactory.CreateLogger <AccountController>(); this.tenant = tenant?.Value; this.tenantId = this.tenant.AppTenantId; if (context.ApplicationUser.Where(X => X.AppTenantId == this.tenantId).Any() == false) { AddUsers(_userManager); AddRoles(_roleManager); AddRoleToUser(_userManager); } }
public ApplicationDbContext(AppTenant tenant, IHttpContextAccessor accessor) { _accessor = accessor; if (tenant != null) { this.tenant = tenant; var tenantId = this.tenant.AppTenantId; this.Seed(accessor); //QueryFilterManager.Filter<Page>(q => q.Where(x => x.AppTenantId == tenantId)); //QueryFilterManager.Filter<Language>(q => q.Where(x => x.AppTenantId == tenantId)); //QueryFilterManager.Filter<Media>(q => q.Where(x => x.AppTenantId == tenantId)); //QueryFilterManager.Filter<Gallery>(q => q.Where(x => x.AppTenantId == tenantId)); //QueryFilterManager.Filter<GalleryItem>(q => q.Where(x => x.AppTenantId == tenantId)); //QueryFilterManager.Filter<GalleryItemCategory>(q => q.Where(x => x.AppTenantId == tenantId)); //QueryFilterManager.Filter<Post>(q => q.Where(x => x.AppTenantId == tenantId)); //QueryFilterManager.Filter<PostCategory>(q => q.Where(x => x.AppTenantId == tenantId)); //QueryFilterManager.Filter<PostPostCategory>(q => q.Where(x => x.AppTenantId == tenantId)); //QueryFilterManager.Filter<ApplicationUser>(q => q.Where(x => x.AppTenantId == tenantId)); //QueryFilterManager.Filter<Role>(q => q.Where(x => x.AppTenantId == tenantId)); //QueryFilterManager.Filter<Customization>(c => c.Where(x => x.AppTenantId == tenantId)); //QueryFilterManager.Filter<Setting>(q => q.Where(x => x.AppTenantId == tenantId)); //QueryFilterManager.InitilizeGlobalFilter(this); } }
public UnitOfWork(ApplicationDbContext context, AppTenant tenant) { this.tenant = tenant; _context = context; Initialize(); }
/// <summary> /// Creates a new instance of <see cref="SignInManager{TUser}"/>. /// </summary> /// <param name="userManager">An instance of <see cref="UserManager"/> used to retrieve users from and persist users.</param> /// <param name="contextAccessor">The accessor used to access the <see cref="HttpContext"/>.</param> /// <param name="claimsFactory">The factory to use to create claims principals for a user.</param> /// <param name="optionsAccessor">The accessor used to access the <see cref="IdentityOptions"/>.</param> /// <param name="logger">The logger used to log messages, warnings and errors.</param> /// <param name="schemes">The scheme provider that is used enumerate the authentication schemes.</param> /// <param name="tenant"></param> public SignInManager(UserManager <TUser> userManager, IHttpContextAccessor contextAccessor, IUserClaimsPrincipalFactory <TUser> claimsFactory, IOptions <IdentityOptions> optionsAccessor, ILogger <SignInManager <TUser> > logger, IAuthenticationSchemeProvider schemes, AppTenant tenant) { if (userManager == null) { throw new ArgumentNullException(nameof(userManager)); } if (contextAccessor == null) { throw new ArgumentNullException(nameof(contextAccessor)); } if (claimsFactory == null) { throw new ArgumentNullException(nameof(claimsFactory)); } UserManager = userManager; _contextAccessor = contextAccessor; ClaimsFactory = claimsFactory; Options = optionsAccessor?.Value ?? new IdentityOptions(); Logger = logger; _schemes = schemes; Tenant = tenant; }
public async Task <IActionResult> Edit(string id, [Bind("AppTenantId,Name,Title,Hostname,ThemeName,ThemeId,ConnectionString,Folder,RequireSSL,OwnerUserName,TrialEndDate,CreateDate")] AppTenant appTenant) { if (id != appTenant.AppTenantId) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(appTenant); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!AppTenantExists(appTenant.AppTenantId)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } ViewData["ThemeId"] = new SelectList(_context.Themes, "Id", "CreatedBy", appTenant.ThemeId); return(View(appTenant)); }
public async Task <AppTenant> UpdateTenantAsync(AppTenant t) { var e = new AppTenantEntity(t.TenantId, t.Name, t.AdminEmail, t.InvitedBy, t.InviteRedeemUrl); var thing = await UpdateTenantEntityAsync(e); return(t); }
public ApiResult <long> Post([FromBody] AppTenant value) { if (!ModelState.IsValid) { return(new ApiResult <long>(l, BasicControllerEnums.UnprocessableEntity, ModelErrors())); } value.OwnerUserId = UserId; tenantDb.Add(value); try { tenantDb.SaveChanges(); } catch (Exception ex) { return(new ApiResult <long>(l, BasicControllerEnums.ExpectationFailed, ex.Message) { data = 0 }); } return(new ApiResult <long>(value.Id)); }
public TenantDbContext(AppTenant tenant) { if (tenant == null) { throw new Exception("TenantDbContext , tenant is null referance"); } this.tenant = tenant; }
public void Deve_Criar_Novo_Tenant() { var tenant = new AppTenant("Treeze", "localhost:43500", null, null); Assert.AreEqual(tenant.EntityStatus, EntityStatus.Activated); Assert.AreEqual(tenant.Notifications.Count, 0); Assert.IsTrue(tenant.Valid); }
public void Setup() { _tenant = new AppTenant("Treeze", "localhost:43500", null, null); _pageComponent = new PageComponent("Minha Página"); _customForms = new List <CustomForm>(); _customFields = new List <CustomField>(); _customFieldOptions = new List <CustomFieldOption>(); _formPageComponents = new List <FormPageComponent>(); _customFormAnswers = new List <CustomFormAnswer>(); _mockCustomFormRepository = new Mock <ICustomFormRepository>(); _mockCustomFieldRepository = new Mock <ICustomFieldRepository>(); _mockCustomFieldOptionRepository = new Mock <ICustomFieldOptionRepository>(); _mockFormPageComponentRepository = new Mock <IFormPageComponentRepository>(); _mockCustomFormAnswerRepository = new Mock <ICustomFormAnswerRepository>(); _mockCustomFormRepository.Setup(mr => mr.Save(It.IsAny <CustomForm>())).Callback((CustomForm target) => { _customForms.Add(target); if (target.Fields == null) { return; } foreach (var targetField in target.Fields) { _customFields.Add(targetField); if (targetField.Options == null) { continue; } foreach (var targetFieldOption in targetField.Options) { _customFieldOptions.Add(targetFieldOption); } } }); _mockCustomFieldRepository.Setup(mr => mr.Save(It.IsAny <CustomField>())).Callback((CustomField target) => { _customFields.Add(target); }); _mockCustomFieldRepository.Setup(mr => mr.Get(It.IsAny <Guid>())).Returns((Guid id) => _customFields.FirstOrDefault(x => x.Id == id && x.TenantId == _tenant.Id)); _mockCustomFieldOptionRepository.Setup(mr => mr.Save(It.IsAny <CustomFieldOption>())).Callback((CustomFieldOption target) => { _customFieldOptions.Add(target); }); _mockFormPageComponentRepository.Setup(mr => mr.Save(It.IsAny <FormPageComponent>())).Callback((FormPageComponent target) => { _formPageComponents.Add(target); }); _mockCustomFormAnswerRepository.Setup(mr => mr.Save(It.IsAny <CustomFormAnswer>())).Callback((CustomFormAnswer target) => { _customFormAnswers.Add(target); }); _customFormRepository = _mockCustomFormRepository.Object; _customFieldRepository = _mockCustomFieldRepository.Object; _customFieldOptionRepsitory = _mockCustomFieldOptionRepository.Object; _formPageComponentRepository = _mockFormPageComponentRepository.Object; _customFormAnswerRepository = _mockCustomFormAnswerRepository.Object; _handler = new CustomFormsHandler(_tenant, _customFormRepository, _customFieldRepository, _customFieldOptionRepsitory, _formPageComponentRepository, _customFormAnswerRepository); }
public CustomFormsHandler(AppTenant tenant, ICustomFormRepository customFormRepository, ICustomFieldRepository customFieldRepository, ICustomFieldOptionRepository customFieldOptionRepository, IFormPageComponentRepository formPageComponentRepository, ICustomFormAnswerRepository customFormAnswerRepository) { _customFormRepository = customFormRepository; _customFieldRepository = customFieldRepository; _customFieldOptionRepository = customFieldOptionRepository; _formPageComponentRepository = formPageComponentRepository; _customFormAnswerRepository = customFormAnswerRepository; _tenant = tenant; }
public void EnsureNameIsSlugifyToGenerateId_WhenUseTenant(string name, string expectedId) { AppTenant tenant = new AppTenant() { Name = name, }; Assert.Equal(expectedId, tenant.Id); }
public AppTenantDbContext(AppTenant tenant) { if (tenant == null) { throw new ArgumentNullException(nameof(tenant)); } this._tenant = tenant; }
public async Task <IActionResult> Create(AppTenant tenant) { tenant.DateAdded = DateTime.UtcNow; tenant.InvitedBy = HttpContext.User.Identity.Name; tenant.InviteSent = false; var t = await _appService.AddTenantAsync(tenant); return(RedirectToAction("Index")); }
public BloggingContext(DbContextOptions <BloggingContext> options, ITenantProvider tenantProvider) : base(options) { _tenant = tenantProvider.GetTenant(); if (Database.EnsureCreated()) { // seed data base } }
public HomeController(ApplicationDbContext context, SignInManager <ApplicationUser> signInManager, IEmailSender emailSender, UserManager <ApplicationUser> userManager, IFeedbackService _feedbackService, ITenant <AppTenant> _tenant) { _context = context; this.feedbackService = _feedbackService; this.tenant = _tenant.Value; this.userManager = userManager; this.signInManager = signInManager; this.emailSender = emailSender; }
public void Deve_Criar_Novo_Usuario() { Settings.SecurityKey = "cbffeba849124af8b7b89675c223fd3d"; var tenant = new AppTenant("Treeze", "localhost:43500", null, null); var user = new User(new NameVo("Victor", "Luiz"), new EmailVo("*****@*****.**"), UserRole.User, new PasswordVo("12345678", "12345678"), null, tenant.Id); Assert.AreEqual(user.EntityStatus, EntityStatus.Activated); Assert.AreEqual(user.Notifications.Count, 0); Assert.IsTrue(user.Valid); }
/// <summary> /// Configures the services for specific tenant to add to the ASP.NET Core Injection of Control (IoC) container. This method gets /// called by the ASP.NET runtime. See /// http://blogs.msdn.com/b/webdev/archive/2014/06/17/dependency-injection-in-asp-net-vnext.aspx. /// </summary> /// <param name="services">The services collection or IoC container.</param> /// <param name="tenant">The tenant object.</param> public void ConfigurePerTenantServices(IServiceCollection services, AppTenant tenant) { if (tenant.Id.ToUpperInvariant().StartsWith("Tenant-1".ToUpperInvariant())) { services.AddMvc(); } else if (tenant.Id.ToUpperInvariant() == "Tenant-2".ToUpperInvariant()) { } }
public RestaurantController(IRestaurantManager restaurantManager, AppTenant tenant) { if (tenant == null) { throw new NullReferenceException("tenant object cannot be null"); } _restaurantManager = restaurantManager; _tenant = tenant; }
public void EnsureSameTenantIsReturned_WhenTenantWrapper() { AppTenant tenant = new AppTenant() { Name = "Name", }; TenantWrapper <AppTenant> tenantWrapper = new TenantWrapper <AppTenant>(tenant); Assert.Same(tenant, tenantWrapper.Value); }
public void WhenNullNameSsGiven_AndUseTenant_ThenThrowArgumentNullException() { AppTenant tenant = new AppTenant() { Name = null, }; Exception ex = Assert.Throws <ArgumentNullException>(() => tenant.Id); Assert.NotNull(ex); }
public static void AddPages(ApplicationDbContext context, AppTenant tenant) { var p = new Page(); p.Title = "Home"; p.Slug = "home"; p.IsPublished = true; p.AppTenantId = tenant.AppTenantId; context.Pages.Add(p); context.SaveChanges(); }
public AppTenantDbContext Create(DbContextFactoryOptions options) { AppTenant testTenant = null; using (var context = new CloudOfficeDbContext()) { testTenant = context.AppTenants.First(); } return(new AppTenantDbContext(testTenant)); }
public RepositoryBase(DbContext context, AppTenant tenant, bool tenancyActive = true) { _context = context; _entities = context.Set <TEntity>(); this.tenant = tenant; TenantFilter = z => (z.TenantId ?? "") == tenant.Id; if (!tenancyActive) { TenantFilter = z => true; } }
public async Task <IActionResult> Create([Bind("AppTenantId,Name,Title,Hostname,ThemeName,ThemeId,ConnectionString,Folder,RequireSSL,OwnerUserName,TrialEndDate,CreateDate")] AppTenant appTenant) { if (ModelState.IsValid) { _context.Add(appTenant); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewData["ThemeId"] = new SelectList(_context.Themes, "Id", "CreatedBy", appTenant.ThemeId); return(View(appTenant)); }
public static void AddAppTenants(HostDbContext context, Theme theme) { var appTenant = new AppTenant(); appTenant.Name = "BilgiKoleji"; appTenant.Title = "Bilgi Koleji"; appTenant.Hostname = "localhost:60002"; appTenant.ThemeName = theme.Name; appTenant.ConnectionString = $"Server=.;Database={appTenant.Name};Trusted_Connection=True;MultipleActiveResultSets=true"; appTenant.Folder = "bilgikoleji"; appTenant.Theme = theme; appTenant.ThemeId = theme.Id; context.AppTenants.Add(appTenant); var appTenant2 = new AppTenant(); appTenant2.Name = "Atasehir"; appTenant2.Title = "Bilgi Koleji Ataşehir"; appTenant2.Hostname = "localhost:60001"; appTenant2.ThemeName = theme.Name; appTenant2.ConnectionString = $"Server=.;Database={appTenant2.Name};Trusted_Connection=True;MultipleActiveResultSets=true"; appTenant2.Folder = "atasehir"; appTenant2.Theme = theme; appTenant2.ThemeId = theme.Id; context.AppTenants.Add(appTenant2); var appTenant3 = new AppTenant(); appTenant3.Name = "Maltepe"; appTenant3.Title = "Bilgi Koleji Maltepe"; appTenant3.Hostname = "localhost:60003"; appTenant3.ThemeName = theme.Name; appTenant3.ConnectionString = $"Server=.;Database={appTenant3.Name};Trusted_Connection=True;MultipleActiveResultSets=true"; appTenant3.Folder = "maltepe"; appTenant3.Theme = theme; appTenant3.ThemeId = theme.Id; context.AppTenants.Add(appTenant3); var appTenant4 = new AppTenant(); appTenant4.Name = "Mersin"; appTenant4.Title = "Bilgi Koleji Mersin"; appTenant4.Hostname = "localhost:60004"; appTenant4.ThemeName = theme.Name; appTenant4.ConnectionString = $"Server=.;Database={appTenant4.Name};Trusted_Connection=True;MultipleActiveResultSets=true"; appTenant4.Folder = "mersin"; appTenant4.Theme = theme; appTenant4.ThemeId = theme.Id; context.AppTenants.Add(appTenant4); context.SaveChanges(); }
public AccountController( UserManager <ApplicationUser> userManager, SignInManager <ApplicationUser> signInManager, IEmailSender emailSender, ILogger <AccountController> logger, ApplicationDbContext context, ITenant <AppTenant> tenant) { _userManager = userManager; _signInManager = signInManager; _emailSender = emailSender; _logger = logger; this.tenant = tenant.Value; this._context = context; }
public static void Seed(this ApplicationDbContext context, AppTenant tenant) { // migration'ları veritabanına uygula context.Database.Migrate(); // Look for any pages record. if (context.Pages.Any()) { return; // DB has been seeded } // Perform seed operations AddPages(context, tenant); }
public AccountController( UserManager <ApplicationUser> userManager, RoleManager <ApplicationRole> roleManager, SignInManager <ApplicationUser> signInManager, IEmailSender emailSender, ILogger <AccountController> logger, IConfiguration Configuration, AppTenant appTenant ) { _signInManager = signInManager; _logger = logger; }
public async Task<ActionResult> CreateAsync() { try { AppTenant tenant = new AppTenant { Id = Guid.NewGuid().ToString() }; _dbContext.TenantsRepository.Insert(tenant); await _dbContext.SaveChangesAsync(); return ActionResult.Success(tenant); } catch(Exception ex) { return ActionResult.Failed(ex); } }
public HomeController(AppTenant tenant) { this.tenant = tenant; }
public HomeController(ITenant<AppTenant> tenant) { this.tenant = tenant?.Value; }