3

I can import customers with the API using /rest/all/V1/customers endpoint. I can also supply a password.

But is it possible to import a customer with a hashed password with the M2 API? If possible, how would I do that? To be clear, I just want to supply a hashed password in the request. It's coming from Magento 1 and is MD5 hashed (which M2 supports).

I tried password_hash (named like the field in the table) instead, but that doesn't work. The field stays NULL.

TL:DR

How can I import customers with hashed passwords with the API?

asked Feb 17, 2021 at 21:08

2 Answers 2

1

I tried this /rest/default/V1/customers/me - it does indeed save the new customer entity and the set password_hash, but the customer is unable to login afterwards. So i'm missing something, but the method looks promising.


LE: As Akif suggested, I needed to add the :0 at the end of the M1 hash.

answered Feb 18, 2021 at 17:08
9
  • hey @Akif, did you try this? Commented Feb 19, 2021 at 7:04
  • No not yet. What is the difference with this endpoint and the one in my question? To fix your issue regarding not working of hashes. If the hash is coming from Magento 1 just add :0 to the end of the string. This will make it work since M2 its backwards compatible. See also magento.stackexchange.com/a/259638/5827 Commented Feb 19, 2021 at 9:59
  • 1
    I don't have an m1 pass to try this out (i tried to emulate it, unsuccessfully, it seems), but thought you might and see if suits your needs. it's different from your mentioned endpoint as you provide the password in the 'password' property of the payload, and I provide the 'passwordHash' in mine which will fill in the password_hash field from the customers entity table. Commented Feb 19, 2021 at 10:11
  • 1
    Yes, /swagger is listing it too. I think I found the problem. I had the hash inside the customer object. It should have been outside it. Thanks for the help! Commented Feb 23, 2021 at 13:41
  • 1
    yep, that happened to me as well when i first tried it :D :D glad you sorted this out. please consider marking this this topic as solved if you found the solution. Commented Feb 23, 2021 at 13:48
-1

There is no need to add extra code or plugins to support the MD5 hash in Magento 2.

If you want to import the passwords directly you just have to add ":0" after the raw password from Magento 1.

Magento 2 supports multiple versions to hash the password. Version 0 is MD5, which is used by Magento 1.

The passwords in Magento 2 are formatted as: {password hash}:{salt}:{hash version}

The passwords in Magento 1 are formatted as: {password hash}:{salt}

answered Feb 18, 2021 at 19:28
4
  • Thanks for your answer I figured that out already. But this was not the question. The questions is how to import the hash trough the API. Commented Feb 18, 2021 at 19:29
  • Create your own API endpoint and do as above Commented Feb 18, 2021 at 19:31
  • 1
    its seems /V1/customers/me supports sending the hash along to insert it as Diana pointed out. No need to make a custom endpoint Commented Feb 19, 2021 at 10:13
  • @Akif, did work as expected? if so, please consider marking the proper answer as solution. would be great to let me know if it indeed suits the needs for an m1 to m2 customer migration via API and i will edit my answer accordingly so there is no doubt it does what it's supposed to. Commented Feb 20, 2021 at 16:50

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.