Exemplo n.º 1
0
        public async Task <User> RegisterAsync(string name, string surname, string emailAddress, string userName, string plainPassword, bool isEmailConfirmed)
        {
            CheckForTenant();
            CheckIsRegisterEnabled();
            var tenant = await GetActiveTenantAsync();

            var user = new User
            {
                TenantId               = tenant.Id,
                Name                   = name,
                Surname                = surname,
                EmailAddress           = emailAddress,
                IsActive               = true,
                UserName               = userName,
                IsEmailConfirmed       = isEmailConfirmed,
                IsPhoneNumberConfirmed = false,
                Roles                  = new List <UserRole>(),
                Password               = new PasswordHasher().HashPassword(plainPassword)
            };


            foreach (var defaultRole in _roleManager.Roles.Where(r => r.IsDefault).ToList())
            {
                user.Roles.Add(new UserRole(tenant.Id, user.Id, defaultRole.Id));
            }

            CheckErrors(await _userManager.CreateAsync(user));
            await CurrentUnitOfWork.SaveChangesAsync();

            await _appNotifier.WelcomeToTheApplicationAsync(user);

            await _appNotifier.NewUserRegisteredAsync(user);

            return(user);
        }
Exemplo n.º 2
0
        public async Task <User> RegisterAsync(string name, string surname, string emailAddress, string userName, string plainPassword, bool isEmailConfirmed, string emailActivationLink)
        {
            CheckForTenant();
            CheckSelfRegistrationIsEnabled();

            var tenant = await GetActiveTenantAsync();

            var isNewRegisteredUserActiveByDefault = await SettingManager.GetSettingValueAsync <bool>(AppSettings.UserManagement.IsNewRegisteredUserActiveByDefault);

            await _userPolicy.CheckMaxUserCountAsync(tenant.Id);

            var user = new User
            {
                TenantId         = tenant.Id,
                Name             = name,
                Surname          = surname,
                EmailAddress     = emailAddress,
                IsActive         = isNewRegisteredUserActiveByDefault,
                UserName         = userName,
                IsEmailConfirmed = isEmailConfirmed,
                Roles            = new List <UserRole>()
            };

            user.SetNormalizedNames();

            user.Password = _passwordHasher.HashPassword(user, plainPassword);

            foreach (var defaultRole in await _roleManager.Roles.Where(r => r.IsDefault).ToListAsync())
            {
                user.Roles.Add(new UserRole(tenant.Id, user.Id, defaultRole.Id));
            }

            CheckErrors(await _userManager.CreateAsync(user));
            await CurrentUnitOfWork.SaveChangesAsync();

            if (!user.IsEmailConfirmed)
            {
                user.SetNewEmailConfirmationCode();
                await _userEmailer.SendEmailActivationLinkAsync(user, emailActivationLink);
            }

            //Notifications
            await _notificationSubscriptionManager.SubscribeToAllAvailableNotificationsAsync(user.ToUserIdentifier());

            await _appNotifier.WelcomeToTheApplicationAsync(user);

            await _appNotifier.NewUserRegisteredAsync(user);

            return(user);
        }
Exemplo n.º 3
0
        public async Task <User> CreateUserWhenSubscribeAsync(int tenantId, UserInfoJson UserInfoJson)
        {
            string userName = UserInfoJson.openid;

            userName = User.PreProcessUserName(userName);
            var user = new User
            {
                UserName = userName,
                TenantId = tenantId,
                Name     = "Weixin",
                Surname  = UserInfoJson.openid,
                NickName = UserInfoJson.nickname,
                Avatar   = UserInfoJson.headimgurl,
                Source   = UserSource.WeixinInteraction,
                IsActive = true
            };

            user.Logins = new List <UserLogin>
            {
                new UserLogin
                {
                    TenantId      = tenantId,
                    LoginProvider = "Weixin",
                    ProviderKey   = UserInfoJson.openid
                }
            };
            string password = User.DefaultPassword;

            user.Password = new Microsoft.AspNet.Identity.PasswordHasher().HashPassword(password);

            //Switch to the tenant
            CurrentUnitOfWork.SetTenantId(tenantId);

            //Add default roles
            user.Roles = new List <UserRole>();

            foreach (var defaultRole in RoleManager.Roles.Where(r => r.IsDefault).ToList())
            {
                user.Roles.Add(new UserRole {
                    RoleId = defaultRole.Id
                });
            }

            //Save user
            await _userManager.CreateAsync(user);

            unitOfWorkManager.Current.SaveChanges();

            //Notifications
            await _notificationSubscriptionManager.SubscribeToAllAvailableNotificationsAsync(user.ToUserIdentifier());

            await _appNotifier.WelcomeToTheApplicationAsync(user);

            await _appNotifier.NewUserRegisteredAsync(user);

            return(user);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 通过手机号注册
        /// </summary>
        /// <param name="name"></param>
        /// <param name="surname"></param>
        /// <param name="phoneNumber"></param>
        /// <param name="userName"></param>
        /// <param name="plainPassword"></param>
        /// <returns></returns>
        public async Task <User> RegisterAsync(string name, string surname, string phoneNumber, string userName, string plainPassword)
        {
            CheckForTenant();
            CheckIsRegisterEnabled();

            if ((await _userManager.FindUserByPhoneNumberAsync(phoneNumber)) != null)
            {
                throw new UserFriendlyException("当前手机号已被注册,注册失败");
            }

            var tenant = await GetActiveTenantAsync();

            var user = new User
            {
                TenantId               = tenant.Id,
                Name                   = name,
                Surname                = surname,
                PhoneNumber            = phoneNumber,
                IsActive               = true,
                UserName               = userName,
                EmailAddress           = "",
                IsEmailConfirmed       = false,
                IsPhoneNumberConfirmed = true,
                Roles                  = new List <UserRole>(),
            };


            foreach (var defaultRole in _roleManager.Roles.Where(r => r.IsDefault).ToList())
            {
                user.Roles.Add(new UserRole(tenant.Id, user.Id, defaultRole.Id));
            }

            CheckErrors(await _userManager.CreateAsync(user, plainPassword));
            await CurrentUnitOfWork.SaveChangesAsync();

            await _appNotifier.WelcomeToTheApplicationAsync(user);

            await _appNotifier.NewUserRegisteredAsync(user);

            return(user);
        }
Exemplo n.º 5
0
        public virtual async Task <ActionResult> Register(RegisterViewModel model)
        {
            try
            {
                CheckSelfRegistrationIsEnabled();

                CheckModelState();

                if (!model.IsExternalLogin && UseCaptchaOnRegistration())
                {
                    var recaptchaHelper = this.GetRecaptchaVerificationHelper();
                    if (recaptchaHelper.Response.IsNullOrEmpty())
                    {
                        throw new UserFriendlyException(L("CaptchaCanNotBeEmpty"));
                    }

                    if (recaptchaHelper.VerifyRecaptchaResponse() != RecaptchaVerificationResult.Success)
                    {
                        throw new UserFriendlyException(L("IncorrectCaptchaAnswer"));
                    }
                }

                if (!_multiTenancyConfig.IsEnabled)
                {
                    model.TenancyName = Tenant.DefaultTenantName;
                }
                else if (model.TenancyName.IsNullOrEmpty())
                {
                    throw new UserFriendlyException(L("TenantNameCanNotBeEmpty"));
                }

                var tenant = await GetActiveTenantAsync(model.TenancyName);

                if (!await SettingManager.GetSettingValueForTenantAsync <bool>(AppSettings.UserManagement.AllowSelfRegistration, tenant.Id))
                {
                    throw new UserFriendlyException(L("SelfUserRegistrationIsDisabledMessage_Detail"));
                }

                //Getting tenant-specific settings
                var isNewRegisteredUserActiveByDefault = await SettingManager.GetSettingValueForTenantAsync <bool>(AppSettings.UserManagement.IsNewRegisteredUserActiveByDefault, tenant.Id);

                var isEmailConfirmationRequiredForLogin = await SettingManager.GetSettingValueForTenantAsync <bool>(AbpZeroSettingNames.UserManagement.IsEmailConfirmationRequiredForLogin, tenant.Id);

                var user = new User
                {
                    TenantId     = tenant.Id,
                    Name         = model.Name,
                    Surname      = model.Surname,
                    EmailAddress = model.EmailAddress,
                    IsActive     = isNewRegisteredUserActiveByDefault
                };

                ExternalLoginInfo externalLoginInfo = null;
                if (model.IsExternalLogin)
                {
                    externalLoginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();

                    if (externalLoginInfo == null)
                    {
                        throw new ApplicationException("Can not external login!");
                    }

                    user.Logins = new List <UserLogin>
                    {
                        new UserLogin
                        {
                            LoginProvider = externalLoginInfo.Login.LoginProvider,
                            ProviderKey   = externalLoginInfo.Login.ProviderKey
                        }
                    };

                    model.UserName = model.EmailAddress;
                    model.Password = Authorization.Users.User.CreateRandomPassword();

                    if (string.Equals(externalLoginInfo.Email, model.EmailAddress, StringComparison.InvariantCultureIgnoreCase))
                    {
                        user.IsEmailConfirmed = true;
                    }
                }
                else
                {
                    if (model.UserName.IsNullOrEmpty() || model.Password.IsNullOrEmpty())
                    {
                        throw new UserFriendlyException(L("FormIsNotValidMessage"));
                    }
                }

                user.UserName = model.UserName;
                user.Password = new PasswordHasher().HashPassword(model.Password);

                _unitOfWorkManager.Current.EnableFilter(AbpDataFilters.MayHaveTenant);
                _unitOfWorkManager.Current.SetFilterParameter(AbpDataFilters.MayHaveTenant, AbpDataFilters.Parameters.TenantId, tenant.Id);

                user.Roles = new List <UserRole>();
                foreach (var defaultRole in await _roleManager.Roles.Where(r => r.IsDefault).ToListAsync())
                {
                    user.Roles.Add(new UserRole {
                        RoleId = defaultRole.Id
                    });
                }

                CheckErrors(await _userManager.CreateAsync(user));
                await _unitOfWorkManager.Current.SaveChangesAsync();

                if (!user.IsEmailConfirmed)
                {
                    user.SetNewEmailConfirmationCode();
                    await _userEmailer.SendEmailActivationLinkAsync(user);
                }

                //Notifications
                await _notificationSubscriptionManager.SubscribeToAllAvailableNotificationsAsync(user.TenantId, user.Id);

                await _appNotifier.WelcomeToTheApplicationAsync(user);

                await _appNotifier.NewUserRegisteredAsync(user);

                //Directly login if possible
                if (user.IsActive && (user.IsEmailConfirmed || !isEmailConfirmationRequiredForLogin))
                {
                    AbpUserManager <Tenant, Role, User> .AbpLoginResult loginResult;
                    if (externalLoginInfo != null)
                    {
                        loginResult = await _userManager.LoginAsync(externalLoginInfo.Login, tenant.TenancyName);
                    }
                    else
                    {
                        loginResult = await GetLoginResultAsync(user.UserName, model.Password, 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 RegisterResultViewModel
                {
                    TenancyName = tenant.TenancyName,
                    NameAndSurname = user.Name + " " + user.Surname,
                    UserName = user.UserName,
                    EmailAddress = user.EmailAddress,
                    IsActive = user.IsActive,
                    IsEmailConfirmationRequired = isEmailConfirmationRequiredForLogin
                }));
            }
            catch (UserFriendlyException ex)
            {
                ViewBag.IsMultiTenancyEnabled = _multiTenancyConfig.IsEnabled;
                ViewBag.UseCaptcha            = !model.IsExternalLogin && UseCaptchaOnRegistration();
                ViewBag.ErrorMessage          = ex.Message;

                return(View("Register", model));
            }
        }
        public async Task <User> RegisterAsync(string name, string surname, string emailAddress, string userName, string plainPassword, string taxId, string serviceType, string npi, string specialty, string primaryContact, string address, string city, string state, string zip, bool isEmailConfirmed, string emailActivationLink)
        {
            bool isActive = false;

            CheckForTenant();
            CheckSelfRegistrationIsEnabled();

            var tenant = await GetActiveTenantAsync();

            //var isNewRegisteredUserActiveByDefault = await SettingManager.GetSettingValueAsync<bool>(AppSettings.UserManagement.IsNewRegisteredUserActiveByDefault);

            HttpClient client = new HttpClient();

            client.BaseAddress = new Uri("http://10.5.1.61:5000/api/eligibility_af/provider");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            HttpResponseMessage response = await client.GetAsync("?tin=" + taxId);

            if (response.IsSuccessStatusCode)
            {
                string  json    = response.Content.ReadAsStringAsync().Result;
                JObject results = JObject.Parse(json);
                if (results.Count > 0)
                {
                    isActive = true;
                }
            }
            if (surname == null)
            {
                surname = "None";
            }

            await _userPolicy.CheckMaxUserCountAsync(tenant.Id);

            var user = new User
            {
                TenantId         = tenant.Id,
                Name             = name,
                Surname          = surname,
                EmailAddress     = emailAddress,
                IsActive         = isActive,
                UserName         = userName,
                TaxId            = taxId,
                ServiceType      = serviceType,
                Npi              = npi,
                Specialty        = specialty,
                PrimaryContact   = primaryContact,
                Address          = address,
                City             = city,
                State            = state,
                Zip              = zip,
                IsEmailConfirmed = isEmailConfirmed,
                Roles            = new List <UserRole>()
            };

            user.SetNormalizedNames();

            user.Password = _passwordHasher.HashPassword(user, plainPassword);

            foreach (var defaultRole in await _roleManager.Roles.Where(r => r.IsDefault).ToListAsync())
            {
                user.Roles.Add(new UserRole(tenant.Id, user.Id, defaultRole.Id));
            }

            CheckErrors(await _userManager.CreateAsync(user));
            await CurrentUnitOfWork.SaveChangesAsync();

            if (!user.IsEmailConfirmed)
            {
                user.SetNewEmailConfirmationCode();
                await _userEmailer.SendEmailActivationLinkAsync(user, emailActivationLink);
            }

            //Notifications
            await _notificationSubscriptionManager.SubscribeToAllAvailableNotificationsAsync(user.ToUserIdentifier());

            await _appNotifier.WelcomeToTheApplicationAsync(user);

            await _appNotifier.NewUserRegisteredAsync(user);

            return(user);
        }
Exemplo n.º 7
0
        public async Task <User> RegisterAsync(
            string firstName,
            string lastName,
            string userName,
            string yourName,
            string contentType,
            string contentVolume,
            string industry,
            bool isContentShedule,
            string cms,
            string website,
            string company,
            string userType,
            string phoneNumber,
            string emailAddress,
            string plainPassword,
            bool isEmailConfirmed)
        {
            //CheckForTenant();
            //CheckSelfRegistrationIsEnabled();

            //var tenant = 1;await GetActiveTenantAsync();
            //var isNewRegisteredUserActiveByDefault = await SettingManager.GetSettingValueAsync<bool>(AppSettings.UserManagement.IsNewRegisteredUserActiveByDefault);
            try
            {
                var companyName = new CompanyInput
                {
                    Name         = company,
                    CreationTime = DateTime.Now
                };
                var companyId = await _companyManager.CreateCompany(companyName);

                //await _userPolicy.CheckMaxUserCountAsync(tenant.Id);


                var user = new User
                {
                    EmailAddress     = emailAddress,
                    IsEmailConfirmed = false,
                    Name             = firstName,
                    Surname          = lastName,
                    UserName         = userName ?? firstName + emailAddress,
                    UserType         = (int)Enum.Parse(typeof(UserType), userType),
                    PhoneNumber      = phoneNumber,
                    CompanyUserId    = companyId,
                    YourName         = yourName,
                    Website          = website,
                    ContentType      = contentType,
                    ContentVolume    = contentVolume,
                    Industry         = industry,
                    IsContentShedule = isContentShedule,
                    CMS        = cms,
                    IsActive   = false,
                    Roles      = new List <UserRole>(),
                    TosVersion = 0,
                    TenantId   = AbpSession.TenantId
                };

                //user.SetNormalizedNames();

                user.Password = _passwordHasher.HashPassword(user, plainPassword);

                foreach (var defaultRole in await _roleManager.Roles.Where(r => r.IsDefault).ToListAsync())
                {
                    user.Roles.Add(new UserRole(null, user.Id, defaultRole.Id));
                }

                await _userManager.CreateAsync(user);

                await CurrentUnitOfWork.SaveChangesAsync();

                //if (!user.IsEmailConfirmed)
                //{
                //    user.SetNewEmailConfirmationCode();
                //await _userEmailer.SendEmailActivationLinkAsync(user, emailActivationLink);
                //}

                //Notifications
                _friendshipRepository.Insert(new Friendship(new Abp.UserIdentifier(AbpSession.TenantId, user.Id), new Abp.UserIdentifier(null, 1), "Default", "admin", null, FriendshipState.Accepted));
                var curentTenant = await GetActiveTenantAsync();

                var tenantAdmin = (await _userManager.GetUsersInRoleAsync("Admin")).FirstOrDefault();
                if (tenantAdmin != null)
                {
                    _friendshipRepository.Insert(new Friendship(new Abp.UserIdentifier(AbpSession.TenantId, user.Id), new Abp.UserIdentifier(curentTenant.Id, tenantAdmin.Id), curentTenant.TenancyName, tenantAdmin.Name, null, FriendshipState.Accepted));
                }
                await _notificationSubscriptionManager.SubscribeToAllAvailableNotificationsAsync(user.ToUserIdentifier());

                await _appNotifier.WelcomeToTheApplicationAsync(user);

                await _appNotifier.NewUserRegisteredAsync(user);

                return(user);
            }
            catch (Exception ex)
            {
                throw new UserFriendlyException(ex.Message);
            }
        }