Example #1
0
        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;
        }
Example #3
0
 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);
     }
 }
Example #4
0
        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);
            }
        }
Example #5
0
        public UnitOfWork(ApplicationDbContext context, AppTenant tenant)
        {
            this.tenant = tenant;
            _context    = context;

            Initialize();
        }
Example #6
0
        /// <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;
        }
Example #7
0
        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));
        }
Example #8
0
        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);
        }
Example #9
0
        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));
        }
Example #10
0
 public TenantDbContext(AppTenant tenant)
 {
     if (tenant == null)
     {
         throw new Exception("TenantDbContext , tenant is null referance");
     }
     this.tenant = tenant;
 }
Example #11
0
        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);
        }
Example #12
0
        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);
        }
Example #13
0
 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;
 }
Example #14
0
        public void EnsureNameIsSlugifyToGenerateId_WhenUseTenant(string name, string expectedId)
        {
            AppTenant tenant = new AppTenant()
            {
                Name = name,
            };

            Assert.Equal(expectedId, tenant.Id);
        }
Example #15
0
        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
     }
 }
Example #18
0
 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;
 }
Example #19
0
        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;
        }
Example #22
0
        public void EnsureSameTenantIsReturned_WhenTenantWrapper()
        {
            AppTenant tenant = new AppTenant()
            {
                Name = "Name",
            };
            TenantWrapper <AppTenant> tenantWrapper = new TenantWrapper <AppTenant>(tenant);

            Assert.Same(tenant, tenantWrapper.Value);
        }
Example #23
0
        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();
        }
Example #25
0
        public AppTenantDbContext Create(DbContextFactoryOptions options)
        {
            AppTenant testTenant = null;

            using (var context = new CloudOfficeDbContext())
            {
                testTenant = context.AppTenants.First();
            }

            return(new AppTenantDbContext(testTenant));
        }
Example #26
0
 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;
     }
 }
Example #27
0
        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));
        }
Example #28
0
        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);
        }
Example #31
0
 public AccountController(
     UserManager <ApplicationUser> userManager,
     RoleManager <ApplicationRole> roleManager,
     SignInManager <ApplicationUser> signInManager,
     IEmailSender emailSender,
     ILogger <AccountController> logger,
     IConfiguration Configuration,
     AppTenant appTenant
     )
 {
     _signInManager = signInManager;
     _logger        = logger;
 }
Example #32
0
        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);
            }
        }
Example #33
0
 public HomeController(AppTenant tenant)
 {
     this.tenant = tenant;
 }
Example #34
0
 public HomeController(ITenant<AppTenant> tenant)
 {
     this.tenant = tenant?.Value;
 }