public void ConstructedWithCustomerIdSetupCorrectly() { var result = new CustomerRegistrationResult(100); result.IsSuccessful.Should().BeTrue(); result.CustomerId.HasValue.Should().BeTrue(); result.CustomerId.Should().Be(100); result.ValidationMessages.Should().NotBeNull(); result.ValidationMessages.Should().BeEmpty(); }
public void ConstructedWithValidationMessagesSetupCorrectly() { var result = new CustomerRegistrationResult( new ValidationMessage("FirstName", "Must have a value"), new ValidationMessage("Surname", "Must have a value")); result.IsSuccessful.Should().BeFalse(); result.CustomerId.HasValue.Should().BeFalse(); result.ValidationMessages.Should().NotBeNullOrEmpty(); result.ValidationMessages.Length.Should().Be(2); var messageOne = result.ValidationMessages[0]; var messageTwo = result.ValidationMessages[1]; messageOne.Property.Should().Be("FirstName"); messageOne.Message.Should().Be("Must have a value"); messageTwo.Property.Should().Be("Surname"); messageTwo.Message.Should().Be("Must have a value"); }
/// <summary> /// Register customer /// </summary> /// <param name="request">Request</param> /// <returns>Result</returns> public virtual CustomerRegistrationResult RegisterCustomer(CustomerRegistrationRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (request.Customer == null) { throw new ArgumentException("Can't load current customer"); } var result = new CustomerRegistrationResult(); //if (request.Customer.IsSearchEngineAccount()) //{ // result.AddError("Search engine can't be registered"); // return result; //} //if (request.Customer.IsBackgroundTaskAccount()) //{ // result.AddError("Background task account can't be registered"); // return result; //} //if (request.Customer.IsRegistered()) //{ // // result.AddError("Current customer is already registered"); // return result; //} if (string.IsNullOrEmpty(request.Email)) { // result.AddError(_localizationService.GetResource("Account.Register.Errors.EmailIsNotProvided")); return(result); } //if (!CommonHelper.IsValidEmail(request.Email)) //{ // //result.AddError(_localizationService.GetResource("Common.WrongEmail")); // return result; //} if (string.IsNullOrWhiteSpace(request.Password)) { // result.AddError(_localizationService.GetResource("Account.Register.Errors.PasswordIsNotProvided")); return(result); } //if (_customerSettings.UsernamesEnabled) //{ // if (string.IsNullOrEmpty(request.Username)) // { // result.AddError(_localizationService.GetResource("Account.Register.Errors.UsernameIsNotProvided")); // return result; // } //} //validate unique user if (_customerService.GetCustomerByEmail(request.Email) != null) { // result.AddError(_localizationService.GetResource("Account.Register.Errors.EmailAlreadyExists")); return(result); } //if (_customerSettings.UsernamesEnabled) //{ // if (_customerService.GetCustomerByUsername(request.Username) != null) // { // result.AddError(_localizationService.GetResource("Account.Register.Errors.UsernameAlreadyExists")); // return result; // } //} //at this point request is valid request.Customer.Username = request.Username; request.Customer.Email = request.Email; var customerPassword = new CustomerPassword { Customer = request.Customer, PasswordFormat = request.PasswordFormat, CreatedOnUtc = DateTime.UtcNow }; switch (request.PasswordFormat) { case PasswordFormat.Clear: customerPassword.Password = request.Password; break; case PasswordFormat.Encrypted: customerPassword.Password = _encryptionService.EncryptText(request.Password); break; case PasswordFormat.Hashed: { var saltKey = _encryptionService.CreateSaltKey(SALT_KEY_SIZE); customerPassword.PasswordSalt = saltKey; customerPassword.Password = _encryptionService.CreatePasswordHash(request.Password, saltKey, ""); } break; } _customerService.InsertCustomerPassword(customerPassword); request.Customer.Active = request.IsApproved; //add to 'Registered' role var registeredRole = _customerService.GetCustomerRoleBySystemName(SystemCustomerRoleNames.Registered); if (registeredRole == null) { throw new Exception("'Registered' role could not be loaded"); } request.Customer.CustomerRoles.Add(registeredRole); //remove from 'Guests' role var guestRole = request.Customer.CustomerRoles.FirstOrDefault(cr => cr.SystemName == SystemCustomerRoleNames.Guests); if (guestRole != null) { request.Customer.CustomerRoles.Remove(guestRole); } _customerService.UpdateCustomer(request.Customer); return(result); }
public CustomerRegistrationResult RegisterCustomer(CustomerRegistrationRequest request) { if (request is null) { throw new System.ArgumentNullException(nameof(request)); } if (request.Customer is null) { throw new ArgumentException("Can't load current customer"); } var result = new CustomerRegistrationResult(); if (_customerService.GetCustomerByEmail(request.Email) != null) { result.AddError("Email already exists"); return(result); } if (_customerService.GetCustomerByUsername(request.UserName) != null) { result.AddError("This user name is already taken"); return(result); } request.Customer.UserName = request.UserName; request.Customer.Email = request.Email; var customerPassword = new CustomerPassword() { Customer = request.Customer, PasswordFormat = request.PasswordFormat, CreatedOnUtc = DateTime.Now }; switch (request.PasswordFormat) { case PasswordFormat.Clear: customerPassword.Password = request.Password; break; case PasswordFormat.Hashed: //TODO break; case PasswordFormat.Encrypted: //TODO break; default: customerPassword.Password = request.Password; //TODO EDIT break; } _customerService.InsertCustomerPassword(customerPassword); request.Customer.Active = request.IsAproved; //TODO add registered roles //... _customerService.UpdateCustomer(request.Customer); return(result); }
/// <summary> /// 验证用户注册信息 /// </summary> /// <param name="request"></param> /// <returns></returns> public CustomerRegistrationResult RegisterCustomer(CustomerRegistrationRequest request) { //_customerService.InsertCustomer(new Customer { IsActive=true,CreatedOn=DateTime.Now,Email="9000@",Deleted=false,LastActivityDate=DateTime.Now,LastLoginDate=DateTime.Now}); if (request == null) { throw new ArgumentNullException("request"); } if (request.Customer == null) { throw new ArgumentException("Can't load current customer"); } var result = new CustomerRegistrationResult(); if (request.Customer.IsRegistered()) { result.AddErrors("用户已经注册"); return(result); } if (String.IsNullOrEmpty(request.Email)) { result.AddErrors("邮箱不能为空"); return(result); } if (!CommonHelper.IsValidEmail(request.Email)) { result.AddErrors("邮箱格式不正确"); return(result); } if (String.IsNullOrEmpty(request.UserName)) { result.AddErrors("用户名不能为空"); return(result); } if (String.IsNullOrWhiteSpace(request.Password)) { result.AddErrors("密码不能为空"); return(result); } if (_customerService.GetCustomerByEmail(request.Email) != null)//唯一性验证 { result.AddErrors("该用户已经存在"); return(result); } request.Customer.Email = request.Email; request.Customer.UserName = request.UserName; request.Customer.PasswordFormat = request.PasswordFormat; switch (request.PasswordFormat) { case PasswordFormat.Clear: request.Customer.Password = request.Password; break; case PasswordFormat.Encrypted: request.Customer.Password = _encryptionService.EncryptText(request.Password); break; case PasswordFormat.Hashed: { string saltKey = _encryptionService.CreateSaltKey(5); request.Customer.PasswordSalt = saltKey; request.Customer.Password = _encryptionService.CreatePasswordHash(request.Password, saltKey, _customerSettings.HashedPasswordFormat); } break; default: break; } request.Customer.IsActive = true; ///添加“注册”角色 var registeredRole = _customerService.GetCustomerRoleBySystemName(SystemCustomerRoleNames.Registered); if (registeredRole == null) { throw new SunFrameworkException("'Registered' role could not be loaded"); } request.Customer.CustomerRoles.Add(registeredRole); ///移除客户角色 var guestRole = request.Customer.CustomerRoles.FirstOrDefault(cr => cr.SystemName == SystemCustomerRoleNames.Guests); if (guestRole != null) { request.Customer.CustomerRoles.Remove(guestRole); } _customerService.UpdateCustomer(request.Customer); return(result); }
public override CustomerRegistrationResult RegisterCustomer(CustomerRegistrationRequest request) { string errCode; CustomerRegistrationResult result = null; var results = new CustomerRegistrationResult(); if (IsValidPassword(request.Password, out errCode)) { result = base.RegisterCustomer(request); } else { switch (errCode.ToUpper()) { case "ERROR_PASSWORD_NO_LETTER": case "ERROR_PASSWORD_NO_NUMBER": case "ERROR_PASSWORD_LENGTH": results.AddError("Passwords must contain at least 1 letter, 1 number, and be at least 8 characters long."); break; default: break; } return(results); } try { var miscPlugins = _pluginFinder.GetPlugins <MyLoginServicePlugin>(storeId: _storeContext.CurrentStore.Id).ToList(); if (miscPlugins.Count > 0) { if (result.Errors.Count < 1) { WebClient client = new WebClient(); client.Headers.Add("Content-Type", "application/json"); client.Credentials = new NetworkCredential(_gbsLoginSettings.GBSCustomerWebServiceUserName, _gbsLoginSettings.GBSCustomerWebServicePassword); UserModel model = new UserModel(); model.currentEmailAddress = request.Email; model.emailAddress = request.Email; model.currentPassword = request.Password; model.password = request.Password; model.updateEmail = false; model.updatePassword = false; string loginJSON = JsonConvert.SerializeObject(model, Formatting.Indented); string responseString = client.UploadString(_gbsLoginSettings.GBSRegisterWebService, loginJSON); if (responseString.ToUpper() != "SUCCESS") { _logger.Error("RegisterCustomer() Override", new Exception(responseString), null); } switch (responseString.ToUpper()) { case "ERROR_PASSWORD_NO_LETTER": case "ERROR_PASSWORD_NO_NUMBER": case "ERROR_PASSWORD_LENGTH": result.AddError("Passwords must contain at least 1 letter, 1 number, and be at least 8 characters long."); break; default: break; } return(result); } } } catch (Exception ex) { _logger.Error("RegisterCustomer() Override", ex, null); } return(result); }
public override Nop.Services.Customers.CustomerRegistrationResult RegisterCustomer(Nop.Services.Customers.CustomerRegistrationRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (request.Customer == null) { throw new ArgumentException("Can't load current customer"); } var result = new CustomerRegistrationResult(); if (request.Customer.IsSearchEngineAccount()) { result.AddError("Search engine can't be registered"); return(result); } if (request.Customer.IsBackgroundTaskAccount()) { result.AddError("Background task account can't be registered"); return(result); } if (request.Customer.IsRegistered()) { result.AddError("Current customer is already registered"); return(result); } if (String.IsNullOrWhiteSpace(request.Password)) { result.AddError(_localizationService.GetResource("Account.Register.Errors.PasswordIsNotProvided")); return(result); } if (String.IsNullOrEmpty(request.Username)) { result.AddError(_localizationService.GetResource("Account.Register.Errors.UsernameIsNotProvided")); return(result); } //validate unique user if (_customerService.GetCustomerByEmail(request.Email) != null) { result.AddError(_localizationService.GetResource("Account.Register.Errors.EmailAlreadyExists")); return(result); } if (_customerService.GetCustomerByUsername(request.Username) != null) { result.AddError(_localizationService.GetResource("Account.Register.Errors.UsernameAlreadyExists")); return(result); } //at this point request is valid request.Customer.Username = request.Username; request.Customer.Email = request.Email; request.Customer.PasswordFormat = request.PasswordFormat; switch (request.PasswordFormat) { case PasswordFormat.Clear: { request.Customer.Password = request.Password; } break; case PasswordFormat.Encrypted: { request.Customer.Password = _encryptionService.EncryptText(request.Password); } break; case PasswordFormat.Hashed: { string saltKey = _encryptionService.CreateSaltKey(5); request.Customer.PasswordSalt = saltKey; request.Customer.Password = _encryptionService.CreatePasswordHash(request.Password, saltKey, _customerSettings.HashedPasswordFormat); } break; default: break; } request.Customer.Active = request.IsApproved; //add to 'Registered' role var registeredRole = _customerService.GetCustomerRoleBySystemName(SystemCustomerRoleNames.Registered); if (registeredRole == null) { throw new NopException("'Registered' role could not be loaded"); } request.Customer.CustomerRoles.Add(registeredRole); //remove from 'Guests' role var guestRole = request.Customer.CustomerRoles.FirstOrDefault(cr => cr.SystemName == SystemCustomerRoleNames.Guests); if (guestRole != null) { request.Customer.CustomerRoles.Remove(guestRole); } //Add reward points for customer registration (if enabled) if (_rewardPointsSettings.Enabled && _rewardPointsSettings.PointsForRegistration > 0) { //TOOD FIXME /* * request.Customer.AddRewardPointsHistoryEntry(_rewardPointsSettings.PointsForRegistration, _localizationService.GetResource("RewardPoints.Message.EarnedForRegistration")); */ } _customerService.UpdateCustomer(request.Customer); return(result); }
/// <summary> /// Register customer /// </summary> /// <param name="request">Request</param> /// <returns>Result</returns> public virtual CustomerRegistrationResult RegisterCustomer(CustomerRegistrationRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (request.Customer == null) { throw new ArgumentException("Can't load current customer"); } var result = new CustomerRegistrationResult(); if (request.Customer.IsSearchEngineAccount()) { result.AddError("Search engine can't be registered"); return(result); } if (request.Customer.IsBackgroundTaskAccount()) { result.AddError("Background task account can't be registered"); return(result); } if (request.Customer.IsRegistered()) { result.AddError("Current customer is already registered"); return(result); } if (string.IsNullOrEmpty(request.Email)) { result.AddError("Email地址不能为空"); return(result); } if (!CommonHelper.IsValidEmail(request.Email)) { result.AddError("无效的Email地址"); return(result); } if (string.IsNullOrWhiteSpace(request.Password)) { result.AddError("密码不能为空"); return(result); } if (string.IsNullOrEmpty(request.Username)) { result.AddError("用户名不能为空"); return(result); } //validate unique user if (_customerService.GetCustomerByEmail(request.Email) != null) { result.AddError("Email地址已经存在"); return(result); } if (_customerService.GetCustomerByUsername(request.Username) != null) { result.AddError("用户名已经存在"); return(result); } if (_customerService.GetCustomerByPhoneNumber(request.PhoneNumber) != null) { result.AddError("手机号码已经存在"); return(result); } //at this point request is valid request.Customer.Username = request.Username; request.Customer.Email = request.Email; var customerPassword = new CustomerPassword { Customer = request.Customer, PasswordFormat = request.PasswordFormat, CreatedOnUtc = DateTime.UtcNow }; switch (request.PasswordFormat) { case PasswordFormat.Clear: customerPassword.Password = request.Password; break; case PasswordFormat.Encrypted: customerPassword.Password = _encryptionService.EncryptText(request.Password); break; case PasswordFormat.Hashed: { var saltKey = _encryptionService.CreateSaltKey(SALT_KEY_SIZE); customerPassword.PasswordSalt = saltKey; customerPassword.Password = _encryptionService.CreatePasswordHash(request.Password, saltKey, _customerSettings.HashedPasswordFormat); } break; } _customerService.InsertCustomerPassword(customerPassword); request.Customer.Active = request.IsApproved; //add to 'Registered' role var registeredRole = _customerService.GetCustomerRoleBySystemName(SystemCustomerRoleNames.Registered); if (registeredRole == null) { throw new GameException("'Registered' role could not be loaded"); } request.Customer.CustomerCustomerRoleMapping.Add(new CustomerCustomerRoleMapping(request.Customer.Id, registeredRole.Id)); //remove from 'Guests' role var guestRole = request.Customer.CustomerCustomerRoleMapping.FirstOrDefault(cr => cr.CustomerRole.SystemName == SystemCustomerRoleNames.Guests); if (guestRole != null) { request.Customer.CustomerCustomerRoleMapping.Remove(guestRole); } _customerService.UpdateCustomer(request.Customer); //publish event _eventPublisher.Publish(new CustomerPasswordChangedEvent(customerPassword)); return(result); }
public virtual CustomerRegistrationResult RegisterCustomer(CustomerRegistrationRequest request) { if (request == null) throw new ArgumentNullException("request"); if (request.Customer == null) throw new ArgumentException("request.Customer must not null"); var result = new CustomerRegistrationResult(); if (request.Customer.IsSearchEngineAccount()) { result.AddError(_localizationService.GetResource("Account.Register.Errors.SearchEngineCantRegister", false)); return result; } if (request.Customer.IsBackgroundTaskAccount()) { result.AddError(_localizationService.GetResource("Account.Register.Errors.BackgroundTaskCantRegister", false)); return result; } if (request.Customer.IsRegistered()) { result.AddError(_localizationService.GetResource("Account.Register.Errors.AlreadyRegistered", false)); return result; } if(string.IsNullOrWhiteSpace(request.Email)) result.AddError(_localizationService.GetResource("Account.Register.Errors.EmailIsNotProvided", false)); else if (!CommonHelper.IsValidEmail(request.Email)) result.AddError(_localizationService.GetResource("Common.WrongEmail", false)); if (string.IsNullOrWhiteSpace(request.Password)) result.AddError(_localizationService.GetResource("Account.Register.Errors.PasswordIsNotProvided", false)); if(_customerSettings.UsernamesEnabled && string.IsNullOrWhiteSpace(request.Username)) result.AddError(_localizationService.GetResource("Account.Register.Errors.UsernameIsNotProvided", false)); if (!result.Success) return result; request.Username = string.IsNullOrWhiteSpace(request.Username) ? null : request.Username.Trim(); request.Email = request.Email.Trim(); // kiểm tra trùng tài khoản, mặc định coi tài khoản request.Customer là guest, ko hề có email, username, nên phép kiểm tra này // ko hề kiểm tra việc tài khoản lấy đc trùng với request.Customer if(_customerService.GetCustomerByEmail(request.Email) != null) result.AddError(_localizationService.GetResource("Account.Register.Errors.EmailAlreadyExists", false)); // khác: luôn đảm bảo là user name duy nhất, như thế sẽ có lợi hơn trong xử lý về sau, nhất là các hệ thống chạy email // 1 thời gian dài muốn chuyển qua user name if (request.Username != null && _customerService.GetCustomerByUsername(request.Username) != null) result.AddError(_localizationService.GetResource("Account.Register.Errors.UsernameAlreadyExists", false)); if (!result.Success) return result; // ok, chuyển request.Customer thành register user. UnActive/Deleted đều ok hết ??? var customer = request.Customer; customer.Username = request.Username; customer.Email = request.Email; customer.PasswordFormat = request.PasswordFormat; SetPasswordValue(customer, request.Password); customer.Active = request.IsApproved; // trạng thái kích hoạt ? // loại bỏ vai trò Guest var guestRole = customer.CustomerRoles.FirstOrDefault(p => SystemCustomerRoleNames.Guests.Equals(p.SystemName, StringComparison.InvariantCulture)); if (guestRole != null) customer.CustomerRoles.Remove(guestRole); // add customer vào vai trò registered var registeredRole = _customerService.GetCustomerRoleBySystemName(SystemCustomerRoleNames.Registered); if (registeredRole == null) throw new ResearchException("'Registered' role could not be loaded"); customer.CustomerRoles.Add(registeredRole); // add điểm thưởng cho registed customer nếu chức năng này đc bật //if(_rewardPointsSettings.Enabled && _rewardPointsSettings.PointsForRegistration > 0) //customer.AddRewardPointsHistoryEntry() // TODO: thiếu 1 đoạn _customerService.UpdateCustomer(customer); return result; }