/// <summary> /// Register customer /// </summary> /// <param name="request">Request</param> /// <returns>Result</returns> public virtual CustomerRegistrationResult RegisterCustomer(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.IsRegistered()) { result.AddError("Current customer is already registered"); return(result); } if (String.IsNullOrEmpty(request.Email)) { result.AddError("Email Is Not Provided."); return(result); } if (!CommonHelper.IsValidEmail(request.Email)) { result.AddError("Wrong Email."); return(result); } if (String.IsNullOrWhiteSpace(request.Password)) { result.AddError("Password Is Not Provided"); return(result); } // validate unique user if (GetCustomerByEmail(request.Email) != null) { result.AddError("Email Already Exists."); return(result); } //at this point request is valid //request.Customer.Username = request.Username; request.Customer.Email = request.Email; //request.Customer.PasswordFormat = request.PasswordFormat; request.Customer.Password = request.Password; switch (PasswordFormat.Clear) { case PasswordFormat.Clear: { request.Customer.Password = request.Password; } break; default: 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; } request.Customer.Active = request.IsApproved; //add to 'Registered' role var registeredRole = GetCustomerRoleBySystemName(SystemCustomerRoleNames.Registered); if (registeredRole == null) { throw new EGSWException("'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); } 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("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.IsRegistered()) { result.AddError("Current customer is already registered"); return result; } if (String.IsNullOrEmpty(request.Email)) { result.AddError("Email Is Not Provided."); return result; } if (!CommonHelper.IsValidEmail(request.Email)) { result.AddError("Wrong Email."); return result; } if (String.IsNullOrWhiteSpace(request.Password)) { result.AddError("Password Is Not Provided"); return result; } // validate unique user if (GetCustomerByEmail(request.Email) != null) { result.AddError("Email Already Exists."); return result; } //at this point request is valid //request.Customer.Username = request.Username; request.Customer.Email = request.Email; //request.Customer.PasswordFormat = request.PasswordFormat; request.Customer.Password = request.Password; switch (PasswordFormat.Clear) { case PasswordFormat.Clear: { request.Customer.Password = request.Password; } break; default: 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; } request.Customer.Active = request.IsApproved; //add to 'Registered' role var registeredRole = GetCustomerRoleBySystemName(SystemCustomerRoleNames.Registered); if (registeredRole == null) throw new EGSWException("'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); UpdateCustomer(request.Customer); return result; }