コード例 #1
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="context"></param>
 /// <param name="service"></param>
 /// <param name="organizationService"></param>
 public TenantController(
     GearIdentityDbContext context, IEntityService service, IOrganizationService <Tenant> organizationService)
 {
     Context              = context;
     _service             = service;
     _organizationService = organizationService;
 }
コード例 #2
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="appContext"></param>
 /// <param name="service"></param>
 /// <param name="pageRender"></param>
 /// <param name="formContext"></param>
 /// <param name="pagesContext"></param>
 /// <param name="viewModelService"></param>
 public PageRenderController(GearIdentityDbContext appContext,
                             IDynamicService service,
                             IPageRender pageRender,
                             IFormContext formContext, IDynamicPagesContext pagesContext, IViewModelService viewModelService)
 {
     _appContext       = appContext;
     _service          = service;
     _formContext      = formContext;
     _pagesContext     = pagesContext;
     _viewModelService = viewModelService;
     _pageRender       = pageRender;
 }
コード例 #3
0
        /// <summary>
        /// Seed async all components
        /// </summary>
        /// <param name="context"></param>
        /// <param name="services"></param>
        /// <returns></returns>
        public async Task SeedAsync(GearIdentityDbContext context, IServiceProvider services)
        {
            var userManager   = services.GetRequiredService <UserManager <GearUser> >();
            var roleManager   = services.GetRequiredService <RoleManager <GearRole> >();
            var logger        = services.GetRequiredService <ILoggerFactory>().CreateLogger(nameof(ApplicationDbContextSeed));
            var baseDirectory = AppContext.BaseDirectory;
            var data          = JsonParser.ReadObjectDataFromJsonFile <IdentitySeedViewModel>(Path.Combine(baseDirectory,
                                                                                                           IdentityResources.Configuration.DEFAULT_FILE_PATH));

            var tenant = new Tenant
            {
                Id          = GearSettings.TenantId,
                Name        = "Default tenant",
                MachineName = GearSettings.DEFAULT_ENTITY_SCHEMA,
                Created     = DateTime.Now,
                Changed     = DateTime.Now,
                Author      = GlobalResources.Roles.ANONYMOUS_USER
            };

            await context.Tenants.AddAsync(tenant);

            await context.PushAsync();

            if (data == null)
            {
                return;
            }

            // Check and seed system roles
            if (data.ApplicationRoles.Any())
            {
                foreach (var role in data.ApplicationRoles)
                {
                    var exists = await roleManager.RoleExistsAsync(role.Name);

                    if (exists)
                    {
                        continue;
                    }
                    role.Created  = DateTime.Now;
                    role.Changed  = DateTime.Now;
                    role.TenantId = GearSettings.TenantId;
                    await roleManager.CreateAsync(role.Adapt <GearRole>());

                    await context.SaveChangesAsync();
                }
                logger.LogInformation("Roles are synchronized with database");
            }

            // Check and seed users
            if (data.ApplicationUsers.Any())
            {
                foreach (var seedUser in data.ApplicationUsers)
                {
                    var user   = seedUser.Adapt <GearUser>();
                    var exists = await userManager.FindByNameAsync(user.UserName);

                    if (exists != null)
                    {
                        continue;
                    }
                    user.AuthenticationType = AuthenticationType.Local;
                    user.TenantId           = GearSettings.TenantId;
                    var result = await userManager.CreateAsync(user, seedUser.Password);

                    if (!result.Succeeded)
                    {
                        continue;
                    }
                    if (data.ApplicationRoles.Any())
                    {
                        await userManager.AddToRolesAsync(user, data.ApplicationRoles.Select(x => x.Name));
                    }

                    await context.PushAsync();
                }
                logger.LogInformation("System users are synchronized with database");
            }
        }