/// <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); }
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)); } }