johnxl Posted October 26, 2017 Share Posted October 26, 2017 Hello ! I am using 1.7.2.3 Now I am editing Classic theme . I am trying to make checkout as much simply as I can , That why I am trying to remove ''Sign in" and "Customers Account " registration . I want that only guest checkout is available . I am not expert . I did not find several tmpl. flies to comment out necessary lines ,that's why I removed some words like "Sign in" by editing translations . I removed password window adding display:none to theme.css . And now almost everything looks fine . But no when I am trying to place order through guest checkout I get error The email is already used, please choose another one or sign in Now the only way to get any other orders from clients ,is to go to dashboard and edit customer e-mail . For example from [email protected] to [email protected] . And then customer is able to place order but only for once . Than I go again and edit his email . I remember few years ago I had a same problem with 1.5.4 version . But I don't remember what I done to fix it . I think there was something simply in back office . Cant find a solution Please help. Thanks . Link to comment Share on other sites More sharing options...
johnxl Posted October 27, 2017 Author Share Posted October 27, 2017 Any ideas ? Maybe I can edit something in code to disable create account or sign in option in guest checkout ? Thanks . Link to comment Share on other sites More sharing options...
El Patron Posted October 27, 2017 Share Posted October 27, 2017 there is only savings is no entering password on guest checkout so don't destroy shop separating the two. I always recommend a high quality 3rd party OPC module that allows you to configure how you checkout process will work. Link to comment Share on other sites More sharing options...
johnxl Posted October 28, 2017 Author Share Posted October 28, 2017 Thanks for answer . But why my guests can't place order twice with one-mail ? I get error - The email is already used, please choose another one or sign in Is it possible to remove this error ? And let guests place order with same e-mail unlimited times ? Link to comment Share on other sites More sharing options...
El Patron Posted October 30, 2017 Share Posted October 30, 2017 Hi please see this PrestaShop forge issue/fix. http://forge.prestashop.com/browse/BOOM-970?jql=project %3D BOOM AND text ~ "guest" Please let us know if this helps. Link to comment Share on other sites More sharing options...
johnxl Posted October 30, 2017 Author Share Posted October 30, 2017 Hello ! I have noticed that my CustomerPersister.php already is correct , like it is in bug fix . But error still apear . Here is my file . Pleas check,maybe you can see why it happens. <?php /** * 2007-2017 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * https://opensource.org/licenses/OSL-3.0 * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to [email protected] so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA <[email protected]> * @copyright 2007-2017 PrestaShop SA * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ use PrestaShop\PrestaShop\Core\Crypto\Hashing as Crypto; use Symfony\Component\Translation\TranslatorInterface; class CustomerPersisterCore { private $errors = []; private $context; private $crypto; private $translator; private $guest_allowed; public function __construct( Context $context, Crypto $crypto, TranslatorInterface $translator, $guest_allowed ) { $this->context = $context; $this->crypto = $crypto; $this->translator = $translator; $this->guest_allowed = $guest_allowed; } public function getErrors() { return $this->errors; } public function save(Customer $customer, $clearTextPassword, $newPassword='') { if ($customer->id) { return $this->update($customer, $clearTextPassword, $newPassword); } else { return $this->create($customer, $clearTextPassword); } } private function update(Customer $customer, $clearTextPassword, $newPassword) { if (!$customer->is_guest && !$this->crypto->checkHash( $clearTextPassword, $customer->passwd, _COOKIE_KEY_ )) { $msg = $this->translator->trans( 'Invalid email/password combination', [], 'Shop.Notifications.Error' ); $this->errors['email'][] = $msg; $this->errors['password'][] = $msg; return false; } if (!$customer->is_guest) { $customer->passwd = $this->crypto->hash( $newPassword ? $newPassword : $clearTextPassword, _COOKIE_KEY_ ); } if ($customer->is_guest) { // TODO SECURITY: Audit requested if ($customer->id != $this->context->customer->id) { // Since we're updating a customer without // checking the password, we need to check that // the customer being updated is the one from the // current session. // The error message is not great, // but it should only be displayed to hackers // so it should not be an issue $this->errors['email'][] = $this->translator->trans( 'There seems to be an issue with your account, please contact support', [], 'Shop.Notifications.Error' ); return false; } } $guest_to_customer = false; if ($clearTextPassword && $customer->is_guest) { $guest_to_customer = true; $customer->is_guest = false; $customer->passwd = $this->crypto->hash( $clearTextPassword, _COOKIE_KEY_ ); } if ($customer->is_guest || $guest_to_customer) { // guest cannot update their email to that of an existing real customer if (Customer::customerExists($customer->email, false, true)) { $this->errors['email'][] = $this->translator->trans( 'An account was already registered with this email address', [], 'Shop.Notifications.Error' ); return false; } } $ok = $customer->save(); if ($ok) { $this->context->updateCustomer($customer); $this->context->cart->update(); Hook::exec('actionCustomerAccountUpdate', [ 'customer' => $customer, ]); if ($guest_to_customer) { $this->sendConfirmationMail($customer); } } return $ok; } private function create(Customer $customer, $clearTextPassword) { if (!$clearTextPassword) { if (!$this->guest_allowed) { $this->errors['password'][] = $this->translator->trans( 'Password is required', [], 'Shop.Notifications.Error' ); return false; } /** * Warning: this is only safe provided * that guests cannot log in even with the generated * password. That's the case at least at the time of writing. */ $clearTextPassword = $this->crypto->hash( microtime(), _COOKIE_KEY_ ); $customer->is_guest = true; } $customer->passwd = $this->crypto->hash( $clearTextPassword, _COOKIE_KEY_ ); if (Customer::customerExists($customer->email, false, true)) { $this->errors['email'][] = $this->translator->trans( 'An account was already registered with this email address', [], 'Shop.Notifications.Error' ); return false; } $ok = $customer->save(); if ($ok) { $this->context->updateCustomer($customer); $this->context->cart->update(); $this->sendConfirmationMail($customer); Hook::exec('actionCustomerAccountAdd', array( 'newCustomer' => $customer, )); } return $ok; } private function sendConfirmationMail(Customer $customer) { if ($customer->is_guest || !Configuration::get('PS_CUSTOMER_CREATION_EMAIL')) { return true; } return Mail::Send( $this->context->language->id, 'account', $this->translator->trans( 'Welcome!', array(), 'Emails.Subject' ), array( '{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{email}' => $customer->email, ), $customer->email, $customer->firstname.' '.$customer->lastname ); } } Link to comment Share on other sites More sharing options...
01K Posted May 13, 2018 Share Posted May 13, 2018 Have you solved this? Link to comment Share on other sites More sharing options...
Klixa Posted September 6, 2018 Share Posted September 6, 2018 I have the same problem, has anyone solved this? Please help! Link to comment Share on other sites More sharing options...
leozao Posted July 26, 2019 Share Posted July 26, 2019 Hi johnxl, I am facing the same issue. Did you manage to solve it? Tks Link to comment Share on other sites More sharing options...
airjohn Posted October 17, 2019 Share Posted October 17, 2019 I think it is fixed on 1.7.5.1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now