コード例 #1
0
        /// <summary>
        /// Creates the specified member.
        /// </summary>
        /// <param name="member">The member.</param>
        /// <returns></returns>
        public RegistrationResultModel Create(ASAMemberModel member)
        {
            const string logMethodName = ".Create(ASAMemberModel member) - ";

            Log.Debug(logMethodName + "Begin Method");

            RegistrationResultModel toReturn = null;

            try
            {
                var email        = member.Emails.First().EmailAddress;
                var updateResult = SaltServiceAgent.RegisterUser(member.ToUserRegistrationDataContract());

                toReturn = new RegistrationResultModel()
                {
                    Member       = updateResult.Member.ToDomainObject(),
                    CreateStatus = (MemberUpdateStatus)updateResult.CreateStatus
                };

                //the site membership code will delete the account in active directory
                //if an exception is raised.
                if (toReturn.CreateStatus == MemberUpdateStatus.InvalidOrganization)
                {
                    throw new Exception("The organization entered was invalid");
                }
                else if (toReturn.CreateStatus == MemberUpdateStatus.IncompleteProfile)
                {
                    throw new Exception("The user profile is incomplete");
                }
                else if (toReturn.CreateStatus == MemberUpdateStatus.Failure)
                {
                    throw new Exception("An exception has occured creating the user");
                }
                else if (toReturn.CreateStatus == MemberUpdateStatus.Duplicate)
                {
                    throw new Exception("The user already exists in the system.");
                }
            }
            catch (Exception x)
            {
                Log.Error(string.Format(logMethodName + "Error inserting new Individual record for member: MemberAccountId={0}, Email={1}, StackTrace={2}"
                                        , member.MembershipId != null ? member.MembershipId.ToString() : "null"
                                        , member.Emails != null && member.Emails.Count > 0 && !string.IsNullOrEmpty(member.Emails[0].EmailAddress) ? member.Emails[0].EmailAddress : "null"
                                        , x));
                throw x;
            }

            //Call async Qualtric's Target Audience API
            if (Common.Config.QTA_Process.ToLower() == "on")
            {
                QualtricsTA QTA = new QualtricsTA();
                QTA.CreateUser(toReturn.Member);
            }

            Log.Debug(logMethodName + "End Method");

            return(toReturn);
        }
コード例 #2
0
        public async Task <RegistrationResultModel> CompleteRegistration([FromBody] SignUpViewModel model)
        {
            var regResult = new RegistrationResultModel();

            if (ModelState.IsValid)
            {
                if (!model.Email.IsValidEmailAndRowKey())
                {
                    regResult.Errors.Add("Invalid email address");
                    return(regResult);
                }

                string userIp    = HttpContext.GetIp();
                string referer   = null;
                string userAgent = HttpContext.GetUserAgent();

                if (!string.IsNullOrEmpty(model.Referer))
                {
                    try
                    {
                        referer = new Uri(model.Referer).Host;
                    }
                    catch
                    {
                        regResult.Errors.Add("Invalid referer url");
                        return(regResult);
                    }
                }

                var code = await _verificationCodesRepository.GetCodeAsync(model.Key);

                RegistrationResponse result = await _registrationClient.RegisterAsync(new RegistrationModel
                {
                    Email     = model.Email,
                    Password  = PasswordKeepingUtils.GetClientHashedPwd(model.Password),
                    Ip        = userIp,
                    Changer   = RecordChanger.Client,
                    UserAgent = userAgent,
                    Referer   = referer,
                    CreatedAt = DateTime.UtcNow,
                    Cid       = code?.Cid,
                    Traffic   = code?.Traffic
                });

                regResult.RegistrationResponse = result;

                if (regResult.RegistrationResponse == null)
                {
                    regResult.Errors.Add("Technical problems during registration.");
                    return(regResult);
                }

                var identity = await _userManager.CreateUserIdentityAsync(result.Account.Id, result.Account.Email, model.Email, true);

                await HttpContext.SignInAsync(OpenIdConnectConstantsExt.Auth.DefaultScheme, new ClaimsPrincipal(identity));

                await _profileActionHandler.UpdatePersonalInformation(result.Account.Id, model.FirstName, model.LastName);

                await _verificationCodesRepository.DeleteCodesAsync(model.Email);
            }
            else
            {
                var errors = ModelState.Values
                             .Where(item => item.ValidationState == ModelValidationState.Invalid)
                             .SelectMany(item => item.Errors);

                foreach (var error in errors)
                {
                    regResult.Errors.Add(error.ErrorMessage);
                }
            }

            return(regResult);
        }
        public async Task <ActionResult <RegistrationResultModel> > RegisterUser([FromBody] RegistrationModel registrationModel)
        {
            try
            {
                var registrationResultModel = new RegistrationResultModel();

                if (registrationModel.username == null || registrationModel.password == null || registrationModel.emailAddress == null ||
                    registrationModel.firstName == null || registrationModel.surname == null || registrationModel.dateOfBirth == null)
                {
                    registrationResultModel.Success      = false;
                    registrationResultModel.ErrorMessage = ErrorMessage.Null.ToString();

                    Console.WriteLine("Register user failed: " + registrationResultModel.ErrorMessage.ToString());
                    return(StatusCode(404, registrationResultModel));
                }

                var userAccount = new WebUserAccountModel();

                userAccount.Username      = registrationModel.username;
                userAccount.EmailAddress  = registrationModel.emailAddress;
                userAccount.AccountType   = AccountType.User.ToString();
                userAccount.AccountStatus = AccountStatus.Inactive.ToString();
                userAccount.CreationDate  = DateTimeOffset.UtcNow;
                userAccount.UpdationDate  = DateTimeOffset.UtcNow;

                var userProfile = new WebUserProfileModel();

                userProfile.FirstName   = registrationModel.firstName;
                userProfile.Surname     = registrationModel.surname;
                userProfile.DateOfBirth = DateTimeOffset.Parse(registrationModel.dateOfBirth);

                var registrationResult = await _registrationManager.RegisterAccount(userAccount, userProfile,
                                                                                    registrationModel.password, registrationModel.ipAddress);

                registrationResultModel.Success = registrationResult.WasSuccessful;
                Console.WriteLine("Registration successful");
                if (registrationResult.WasSuccessful)
                {
                    registrationResultModel.AccountId    = registrationResult.SuccessValue;
                    registrationResultModel.ErrorMessage = ErrorMessage.None.ToString();

                    Console.WriteLine("register user succeeded: " + registrationResultModel.ErrorMessage.ToString());

                    return(Ok(registrationResultModel));
                }
                else
                {
                    registrationResultModel.ErrorMessage = registrationResult.ErrorMessage.ToString();
                    Console.WriteLine("register user failed: " + registrationResultModel.ErrorMessage.ToString());
                    return(StatusCode(404, registrationResultModel));
                }
            }
            catch (SqlCustomException e)
            {
                var registrationResultModel = new RegistrationResultModel();
                Console.WriteLine("Register user failed" + e.Message);
                registrationResultModel.Success      = false;
                registrationResultModel.ErrorMessage = "You could not be registered. Try again.";

                return(StatusCode(404, registrationResultModel));
            }
            catch (NullReferenceException e)
            {
                var registrationResultModel = new RegistrationResultModel();
                Console.WriteLine("Register user failed" + e.Message);
                registrationResultModel.Success      = false;
                registrationResultModel.ErrorMessage = "A null was returned when registering";

                return(StatusCode(404, registrationResultModel));
            }
        }