Esempio n. 1
0
        public async Task <RegisterOutput> Register(RegisterInput input)
        {
            // 检查验证码
            await CaptchaHelper.CheckVierificationCode(
                this._cacheManager,
                this.SettingManager,
                CaptchaType.TenantUserRegister,
                input.UserName,
                input.VerificationCode,
                AbpSession.TenantId);


            var user = await _userRegistrationManager.RegisterAsync(
                input.UserName,
                input.UserName,
                input.EmailAddress,
                input.UserName,
                input.Password,
                true // Assumed email address is always confirmed. Change this if you want to implement email confirmation.
                );

            var isEmailConfirmationRequiredForLogin =
                await SettingManager.GetSettingValueAsync <bool>(AbpZeroSettingNames.UserManagement
                                                                 .IsEmailConfirmationRequiredForLogin);

            return(new RegisterOutput
            {
                // 是否可以登陆 1、用户已激活 并且 2、用户邮箱已确认或未启用邮箱校验 并且 3、没有启用登陆验证码
                CanLogin = user.IsActive &&
                           (user.IsEmailConfirmed || !isEmailConfirmationRequiredForLogin) &&
                           !await UseCaptchaOnLogin()
            });
        }
Esempio n. 2
0
 /// <summary>
 /// 检查验证码
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 private async Task ChcekVierificationCode(AuthenticateModel model)
 {
     // 检查验证码
     await CaptchaHelper.CheckVierificationCode(
         this._cacheManager,
         this.SettingManager,
         this.AbpSession.TenantId.HasValue?CaptchaType.TenantUserLogin : CaptchaType.HostUserLogin,
         model.UserNameOrEmailAddress,
         model.VerificationCode,
         this.AbpSession.TenantId);
 }
Esempio n. 3
0
        /// <summary>
        /// 注册租户信息
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        public async Task <RegisterTenantResultDto> RegisterTenantAsync(CreateTenantDto input)
        {
            // 检查验证码
            await CaptchaHelper.CheckVierificationCode(
                this._cacheManager,
                this.SettingManager,
                CaptchaType.HostTenantRegister,
                input.TenancyName,
                input.VerificationCode);


            //创建租户信息
            var tenant = new Tenant(input.TenancyName, input.Name)
            {
                // 激活根据系统配置
                IsActive = await SettingManager.GetSettingValueAsync <bool>(AppSettingNames.Host.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);


                // 如果没有提交密码,那么走的是默认密码 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();
            }


            var resultDto = new RegisterTenantResultDto()
            {
                TenantId = tenant.Id,
                IsActive = tenant.IsActive,
                UseCaptchaOnUserLogin = await UseCaptchaOnLogin(tenant.Id)
            };

            return(resultDto);
        }