/// <summary> /// 注册租户信息 /// </summary> /// <param name="Input"></param> /// <returns></returns> public async Task <TenantDto> RegisterTenantAsync(CreateTenantDto input) { //创建租户信息 Tenant tenant = new Tenant(input.TenancyName, input.TenancyName) { IsActive = true }; tenant.ConnectionString = input.ConnectionString.IsNullOrEmpty() ? null : SimpleStringCipher.Instance.Encrypt(input.ConnectionString); Abp.Application.Editions.Edition defaultEdition = await _editionManager.FindByNameAsync(EditionManager.DefaultEditionName); if (defaultEdition != null) { tenant.EditionId = defaultEdition.Id; } await TenantManager.CreateAsync(tenant); // 保存以获取新租户的Id await CurrentUnitOfWork.SaveChangesAsync(); // 创建租户数据库 _abpZeroDbMigrator.CreateOrMigrateForTenant(tenant); //创建成功后,需要设置当前工作单元为当前登录后的租户信息 using (CurrentUnitOfWork.SetTenantId(tenant.Id)) { // 给新租户创建角色 CheckErrors(await _roleManager.CreateStaticRoles(tenant.Id)); // 保存,获取角色id await CurrentUnitOfWork.SaveChangesAsync(); // 分配权限 Role adminRole = _roleManager.Roles.Single(r => r.Name == StaticRoleNames.Tenants.Admin); await _roleManager.GrantAllPermissionsAsync(adminRole); // 创建此租户的管理员用户 var adminUser = User.CreateTenantAdminUser(tenant.Id, input.AdminEmailAddress); // 如果没有提交密码,那么走的是默认密码 123qwe adminUser.Password = _passwordHasher.HashPassword(adminUser, input.TenantAdminPassword.IsNullOrWhiteSpace() ? User.DefaultPassword : input.TenantAdminPassword); CheckErrors(await UserManager.CreateAsync(adminUser)); // 保存,获取角色id await CurrentUnitOfWork.SaveChangesAsync(); // 授权 CheckErrors(await UserManager.AddToRoleAsync(adminUser, adminRole.Name)); await CurrentUnitOfWork.SaveChangesAsync(); } return(tenant.MapTo <TenantDto>()); }
public override async Task <TenantDto> CreateAsync(CreateTenantDto input) { CheckCreatePermission(); // Create tenant Tenant tenant = ObjectMapper.Map <Tenant>(input); tenant.ConnectionString = input.ConnectionString.IsNullOrEmpty() ? null : SimpleStringCipher.Instance.Encrypt(input.ConnectionString); Abp.Application.Editions.Edition defaultEdition = await _editionManager.FindByNameAsync(EditionManager.DefaultEditionName); if (defaultEdition != null) { tenant.EditionId = defaultEdition.Id; } await _tenantManager.CreateAsync(tenant); await CurrentUnitOfWork.SaveChangesAsync(); // To get new tenant's id. // Create tenant database _abpZeroDbMigrator.CreateOrMigrateForTenant(tenant); // We are working entities of new tenant, so changing tenant filter using (CurrentUnitOfWork.SetTenantId(tenant.Id)) { // Create static roles for new tenant CheckErrors(await _roleManager.CreateStaticRoles(tenant.Id)); await CurrentUnitOfWork.SaveChangesAsync(); // To get static role ids // Grant all permissions to admin role Role adminRole = _roleManager.Roles.Single(r => r.Name == StaticRoleNames.Tenants.Admin); await _roleManager.GrantAllPermissionsAsync(adminRole); // Create admin user for the tenant User adminUser = User.CreateTenantAdminUser(tenant.Id, input.AdminEmailAddress); await _userManager.InitializeOptionsAsync(tenant.Id); CheckErrors(await _userManager.CreateAsync(adminUser, User.DefaultPassword)); await CurrentUnitOfWork.SaveChangesAsync(); // To get admin user's id // Assign admin user to role! CheckErrors(await _userManager.AddToRoleAsync(adminUser, adminRole.Name)); await CurrentUnitOfWork.SaveChangesAsync(); } return(MapToEntityDto(tenant)); }
private void CreateDefaultTenant() { // Default tenant Tenant defaultTenant = _context.Tenants.IgnoreQueryFilters().FirstOrDefault(t => t.TenancyName == AbpTenantBase.DefaultTenantName); if (defaultTenant == null) { defaultTenant = new Tenant(AbpTenantBase.DefaultTenantName, AbpTenantBase.DefaultTenantName); Abp.Application.Editions.Edition defaultEdition = _context.Editions.IgnoreQueryFilters().FirstOrDefault(e => e.Name == EditionManager.DefaultEditionName); if (defaultEdition != null) { defaultTenant.EditionId = defaultEdition.Id; } _context.Tenants.Add(defaultTenant); _context.SaveChanges(); } }
/// <summary> /// 注册租户信息 /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task <RegisterTenantResultDto> RegisterTenantAsync(CreateTenantDto input) { // 检查验证码 await CaptchaHelper.CheckVerificationCode( this._cacheManager, this.SettingManager, CaptchaType.HostTenantRegister, input.TenancyName, input.VerificationCode); //创建租户信息 var tenant = new Tenant(input.TenancyName, input.Name) { // 激活根据系统配置 IsActive = await SettingManager.GetSettingValueAsync <bool>(AppSettingNames.HostSettings.AllowSelfRegistration) }; tenant.ConnectionString = input.ConnectionString.IsNullOrEmpty() ? null : SimpleStringCipher.Instance.Encrypt(input.ConnectionString); Abp.Application.Editions.Edition defaultEdition = await _editionManager.FindByNameAsync(EditionManager.DefaultEditionName); if (defaultEdition != null) { tenant.EditionId = defaultEdition.Id; } await TenantManager.CreateAsync(tenant); // 保存以获取新租户的Id await CurrentUnitOfWork.SaveChangesAsync(); // 创建租户数据库 _abpZeroDbMigrator.CreateOrMigrateForTenant(tenant); //创建成功后,需要设置当前工作单元为当前登录后的租户信息 using (CurrentUnitOfWork.SetTenantId(tenant.Id)) { // 给新租户创建角色 CheckErrors(await _roleManager.CreateStaticRoles(tenant.Id)); // 保存,获取角色id await CurrentUnitOfWork.SaveChangesAsync(); // 分配权限 Role adminRole = _roleManager.Roles.Single(r => r.Name == StaticRoleNames.Tenants.Admin); await _roleManager.GrantAllPermissionsAsync(adminRole); // 创建此租户的管理员用户 var adminUser = User.CreateTenantAdminUser(tenant.Id, input.AdminEmailAddress, input.UserName); // 如果没有提交密码,那么走的是默认密码 bb123456 adminUser.Password = _passwordHasher.HashPassword(adminUser, input.TenantAdminPassword.IsNullOrWhiteSpace() ? User.DefaultPassword : input.TenantAdminPassword); CheckErrors(await UserManager.CreateAsync(adminUser)); // 保存,获取角色id await CurrentUnitOfWork.SaveChangesAsync(); // 授权 CheckErrors(await UserManager.AddToRoleAsync(adminUser, adminRole.Name)); await CurrentUnitOfWork.SaveChangesAsync(); } var resultDto = new RegisterTenantResultDto() { TenantId = tenant.Id, IsActive = tenant.IsActive, UseCaptchaOnUserLogin = await UseCaptchaOnLogin(tenant.Id) }; return(resultDto); }