public async Task ResetTenantSpecificFeatures(EntityDto input) { await TenantManager.ResetAllFeaturesAsync(input.Id); }
/// <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); }
public async Task Delete(EntityDto input) { var tenant = await TenantManager.GetByIdAsync(input.Id); await TenantManager.DeleteAsync(tenant); }