We are migrating users from a e-commerce site to a new craft commerce 2.x site.

Apparently it's a little too confusing for our customers to use the "forgot password" link to obtain a new password.

So our idea was to send them an email with their username and a link where they can directly set their password.

e.g. "user1", "https://mysite.com/actions/users/set-password?code=qwaZDk6mSa0tbnLBx8U4WkTnTBclK1ZZ&id=779e05ca-5c39-4f66-a56c-9a431bd0b355"

Is it possible to obtain these links programmatically.

We have about 800 users, so copy/pasting them would be very tedious.

any hints?



Given a list of elements/User that you want to get the password reset URL for, you can loop through them and call this for each one:

$url = Craft::$app->getUsers()->getPasswordResetUrl($user)'
  • Hi, I wanted to do this in a template. I've discovered that the password reset link is a combination of the "uid" and a code: /actions/users/set-password?code=<code>&id=<uid>. I can fetch the uid with the following code: {% set users = craft.users().status(null).addSelect(['users.uid']).all() %}, but where does this "code" come from?
    – outline4
    Nov 18 '19 at 10:56
  • 1
    I am sorry... I've discovered that you can use: {{ craft.app.getUsers.getPasswordResetUrl(user) }}. Works like a charm! Thanks!
    – outline4
    Nov 18 '19 at 11:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.