public async Task CreateTenant(CreateTenantInput input) { await TenantManager.CreateWithAdminUserAsync(input.TenancyName, input.Name, input.AdminPassword, input.AdminEmailAddress, input.ConnectionString, input.IsActive, input.EditionId, input.ShouldChangePasswordOnNextLogin, input.SendActivationEmail, input.SubscriptionEndDateUtc?.ToUniversalTime(), input.IsInTrialPeriod, AppUrlService.CreateEmailActivationUrlFormat(input.TenancyName) ); }
public virtual async Task <ActionResult> Register(TenantRegistrationViewModel model) { try { CheckTenantRegistrationIsEnabled(); if (UseCaptchaOnRegistration()) { var recaptchaHelper = this.GetRecaptchaVerificationHelper(); if (recaptchaHelper.Response.IsNullOrEmpty()) { throw new UserFriendlyException(L("CaptchaCanNotBeEmpty")); } if (recaptchaHelper.VerifyRecaptchaResponse() != RecaptchaVerificationResult.Success) { throw new UserFriendlyException(L("IncorrectCaptchaAnswer")); } } //Getting host-specific settings var isNewRegisteredTenantActiveByDefault = await SettingManager.GetSettingValueForApplicationAsync <bool>(AppSettings.TenantManagement.IsNewRegisteredTenantActiveByDefault); var isEmailConfirmationRequiredForLogin = await SettingManager.GetSettingValueForApplicationAsync <bool>(AbpZeroSettingNames.UserManagement.IsEmailConfirmationRequiredForLogin); var defaultEditionIdValue = await SettingManager.GetSettingValueForApplicationAsync(AppSettings.TenantManagement.DefaultEdition); int?defaultEditionId = null; if (!string.IsNullOrEmpty(defaultEditionIdValue) && (await _editionManager.FindByIdAsync(Convert.ToInt32(defaultEditionIdValue)) != null)) { defaultEditionId = Convert.ToInt32(defaultEditionIdValue); } CurrentUnitOfWork.SetTenantId(null); var tenantId = await _tenantManager.CreateWithAdminUserAsync( model.TenancyName, model.Name, model.AdminPassword, model.AdminEmailAddress, null, isNewRegisteredTenantActiveByDefault, defaultEditionId, false, true); ViewBag.UseCaptcha = UseCaptchaOnRegistration(); var tenant = await _tenantManager.GetByIdAsync(tenantId); await _appNotifier.NewTenantRegisteredAsync(tenant); CurrentUnitOfWork.SetTenantId(tenant.Id); var user = await _userManager.FindByNameAsync(AbpUserBase.AdminUserName); //Directly login if possible if (tenant.IsActive && user.IsActive && (user.IsEmailConfirmed || !isEmailConfirmationRequiredForLogin)) { var loginResult = await GetLoginResultAsync(user.UserName, model.AdminPassword, tenant.TenancyName); if (loginResult.Result == AbpLoginResultType.Success) { await SignInAsync(loginResult.User, loginResult.Identity); return(Redirect(Url.Action("Index", "Application"))); } Logger.Warn("New registered user could not be login. This should not be normally. login result: " + loginResult.Result); } return(View("RegisterResult", new TenantRegisterResultViewModel { TenancyName = model.TenancyName, Name = model.Name, UserName = AbpUserBase.AdminUserName, EmailAddress = model.AdminEmailAddress, IsActive = isNewRegisteredTenantActiveByDefault, IsEmailConfirmationRequired = isEmailConfirmationRequiredForLogin })); } catch (UserFriendlyException ex) { ViewBag.UseCaptcha = UseCaptchaOnRegistration(); ViewBag.ErrorMessage = ex.Message; return(View("Index", model)); } }
public async Task <RegisterTenantOutput> RegisterTenant(RegisterTenantInput input) { if (input.EditionId.HasValue) { await CheckEditionSubscriptionAsync(input.EditionId.Value, input.SubscriptionStartType, input.Gateway, input.PaymentId); } else { await CheckRegistrationWithoutEdition(); } using (CurrentUnitOfWork.SetTenantId(null)) { CheckTenantRegistrationIsEnabled(); if (UseCaptchaOnRegistration()) { _recaptchaValidator.Validate(input.CaptchaResponse); } //Getting host-specific settings var isNewRegisteredTenantActiveByDefault = await SettingManager.GetSettingValueForApplicationAsync <bool>(AppSettings.TenantManagement.IsNewRegisteredTenantActiveByDefault); var isEmailConfirmationRequiredForLogin = await SettingManager.GetSettingValueForApplicationAsync <bool>(AbpZeroSettingNames.UserManagement.IsEmailConfirmationRequiredForLogin); DateTime?subscriptionEndDate = null; var isInTrialPeriod = false; if (input.EditionId.HasValue) { isInTrialPeriod = input.SubscriptionStartType == ESubscriptionStartType.Trial; if (isInTrialPeriod) { var edition = (SubscribableEdition)await _editionManager.GetByIdAsync(input.EditionId.Value); subscriptionEndDate = Clock.Now.AddDays(edition.TrialDayCount ?? 0); } } var tenantId = await _tenantManager.CreateWithAdminUserAsync( input.TenancyName, input.Name, input.AdminPassword, input.AdminEmailAddress, null, isNewRegisteredTenantActiveByDefault, input.EditionId, false, true, subscriptionEndDate, isInTrialPeriod, AppUrlService.CreateEmailActivationUrlFormat(input.TenancyName) ); Tenant tenant; if (input.SubscriptionStartType == ESubscriptionStartType.Paid) { if (!input.Gateway.HasValue) { throw new Exception("Gateway is missing!"); } var payment = await _subscriptionPaymentRepository.GetByGatewayAndPaymentIdAsync( input.Gateway.Value, input.PaymentId ); tenant = await _tenantManager.UpdateTenantAsync( tenantId, true, false, payment.PaymentPeriodType, payment.EditionId, EEditionPaymentType.NewRegistration); await _subscriptionPaymentRepository.UpdateByGatewayAndPaymentIdAsync(input.Gateway.Value, input.PaymentId, tenantId, SubscriptionPaymentStatus.Completed); } else { tenant = await TenantManager.GetByIdAsync(tenantId); } await _appNotifier.NewTenantRegisteredAsync(tenant); if (input.EditionId.HasValue && input.Gateway.HasValue && !input.PaymentId.IsNullOrEmpty()) { _paymentCache.RemoveCacheItem(input.Gateway.Value, input.PaymentId); } return(new RegisterTenantOutput { TenantId = tenant.Id, TenancyName = input.TenancyName, Name = input.Name, UserName = AbpUserBase.AdminUserName, EmailAddress = input.AdminEmailAddress, IsActive = tenant.IsActive, IsEmailConfirmationRequired = isEmailConfirmationRequiredForLogin, IsTenantActive = tenant.IsActive }); } }
/// <summary> /// 租户注册 /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task <RegisterTenantOutput> RegisterTenant(RegisterTenantInput input) { using (CurrentUnitOfWork.SetTenantId(null)) { CheckTenantRegistrationIsEnabled(); //if (UseCaptchaOnRegistration())//使用手机验证码作为验证 //{ // await _captchaValidator.ValidateAsync(input.CaptchaResponse); //} switch (input.Type) { case RegisterType.Telephone: { if (input.PhoneNumber.IsNullOrWhiteSpace()) { throw new UserFriendlyException(L("Identity.RequiredPhoneNumber")); } await _verificationCodeManager.CheckRegistrationVerificationCode(input.PhoneNumber, input.RegisterCode); break; } case RegisterType.Email: { if (input.EmailAddress.IsNullOrWhiteSpace()) { throw new UserFriendlyException(L("Identity.RequiredEmail")); } await _verificationCodeManager.CheckRegistrationVerificationCode(input.EmailAddress, input.RegisterCode); break; } default: break; } //Getting host-specific settings var isNewRegisteredTenantActiveByDefault = await SettingManager.GetSettingValueForApplicationAsync <bool>(AppSettings.TenantManagement.IsNewRegisteredTenantActiveByDefault); var isEmailConfirmationRequiredForLogin = await SettingManager.GetSettingValueForApplicationAsync <bool>(AbpZeroSettingNames.UserManagement.IsEmailConfirmationRequiredForLogin); var defaultEditionIdValue = await SettingManager.GetSettingValueForApplicationAsync(AppSettings.TenantManagement.DefaultEdition); int?defaultEditionId = null; if (!string.IsNullOrEmpty(defaultEditionIdValue) && (await _editionManager.FindByIdAsync(Convert.ToInt32(defaultEditionIdValue)) != null)) { defaultEditionId = Convert.ToInt32(defaultEditionIdValue); } var tenantId = await TenantManager.CreateWithAdminUserAsync( input.TenancyName, input.TenancyName, input.Password, input.EmailAddress ?? string.Empty, input.PhoneNumber, null, isNewRegisteredTenantActiveByDefault, defaultEditionId, false, true, null, false, _appUrlService.CreateEmailActivationUrlFormat(input.TenancyName) ); var tenant = await TenantManager.GetByIdAsync(tenantId); await _appNotifier.NewTenantRegisteredAsync(tenant); return(new RegisterTenantOutput { TenantId = tenant.Id, TenancyName = input.TenancyName, Name = input.TenancyName, UserName = input.TenancyName, IsActive = tenant.IsActive, EmailAddress = input.EmailAddress, IsEmailConfirmationRequired = isEmailConfirmationRequiredForLogin, IsTenantActive = tenant.IsActive }); } }
public virtual async Task <ActionResult> NewTenantSignUp(TenantRegistrationView model) { try { if (!CheckActivationCode(model.OTP)) { ViewBag.ErrorMessage = L("OTPMismatched"); CheckTenantRegistrationIsEnabled(); ViewBag.UseCaptcha = UseCaptchaOnRegistration(); ViewBag.PasswordComplexitySetting = SettingManager.GetSettingValue(AppSettings.Security.PasswordComplexity).Replace("\"", ""); return(View(new TenantRegistrationView() { PlanId = model.PlanId, CurrentPlan = _tenantManager.GetCurrentTenantPlan(model.PlanId), listCountries = _tenantManager.GetCountries(), listCurrencies = _tenantManager.GetCurrencies() })); } CheckTenantRegistrationIsEnabled(); if (UseCaptchaOnRegistration()) { var recaptchaHelper = this.GetRecaptchaVerificationHelper(); if (recaptchaHelper.Response.IsNullOrEmpty()) { throw new UserFriendlyException(L("CaptchaCanNotBeEmpty")); } if (recaptchaHelper.VerifyRecaptchaResponse() != RecaptchaVerificationResult.Success) { throw new UserFriendlyException(L("IncorrectCaptchaAnswer")); } } //Getting host-specific settings var isNewRegisteredTenantActiveByDefault = await SettingManager.GetSettingValueForApplicationAsync <bool>(AppSettings.TenantManagement.IsNewRegisteredTenantActiveByDefault); var isEmailConfirmationRequiredForLogin = await SettingManager.GetSettingValueForApplicationAsync <bool>(AbpZeroSettingNames.UserManagement.IsEmailConfirmationRequiredForLogin); var defaultEditionIdValue = await SettingManager.GetSettingValueForApplicationAsync(AppSettings.TenantManagement.DefaultEdition); int?defaultEditionId = null; if (!string.IsNullOrEmpty(defaultEditionIdValue) && (await _editionManager.FindByIdAsync(Convert.ToInt32(defaultEditionIdValue)) != null)) { defaultEditionId = Convert.ToInt32(defaultEditionIdValue); } // model.PlanId = Convert.ToInt32(ViewBag.PlanId); CurrentUnitOfWork.SetTenantId(null); var tenantId = await _tenantManager.CreateWithAdminUserAsync( model.TenancyName, model.LoginName, model.AdminPassword, model.AdminEmailAddress, model.FullName, model.CellNumber.Replace("(", "").Replace(")", "").Replace("-", "").Replace(" ", ""), //model.PhoneNumber, //model.CompanyRegistrationNo, //model.CompanyVatNo, //model.Address, //model.City, model.CountryCode, model.CurrencyCode, //model.InvoicingInstruction, // model.BillingCountryCode, // model.BillingCurrencyCode, //model.Timezone, model.CardHoldersName, model.CardNumber, model.CardExpiration, model.CVV, model.payment, model.PlanId, null, true, defaultEditionId, false, true); ViewBag.UseCaptcha = UseCaptchaOnRegistration(); var tenant = await _tenantManager.GetByIdAsync(tenantId); await _appNotifier.NewTenantRegisteredAsync(tenant); CurrentUnitOfWork.SetTenantId(tenant.Id); var user = await _userManager.FindByNameAsync(AbpUserBase.AdminUserName); //Directly login if possible if (tenant.IsActive && user.IsActive && (user.IsEmailConfirmed || !isEmailConfirmationRequiredForLogin)) { var loginResult = await GetLoginResultAsync(user.UserName, model.AdminPassword, tenant.TenancyName); if (loginResult.Result == AbpLoginResultType.Success) { await SignInAsync(loginResult.User, loginResult.Identity); return(Redirect("~/Application#!/tenant/settings")); } Logger.Warn("New registered user could not be login. This should not be normally. login result: " + loginResult.Result); } return(View("RegisterResult", new TenantRegisterResultViewModel { TenancyName = model.TenancyName, Name = model.LoginName, UserName = AbpUserBase.AdminUserName, EmailAddress = model.AdminEmailAddress, IsActive = isNewRegisteredTenantActiveByDefault, IsEmailConfirmationRequired = isEmailConfirmationRequiredForLogin })); } catch (UserFriendlyException ex) { ViewBag.UseCaptcha = UseCaptchaOnRegistration(); ViewBag.ErrorMessage = ex.Message; return(View(new TenantRegistrationView() { PlanId = model.PlanId, CurrentPlan = _tenantManager.GetCurrentTenantPlan(model.PlanId), listCountries = _tenantManager.GetCountries(), listCurrencies = _tenantManager.GetCurrencies() })); } }