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