Password reset redirect does not include email in parameters

Hi,

I am inviting users to my app by creating the user in auth0 and then creating a password reset ticket.

The user then gets an email for a password reset. However, after completing the password reset the user is redirected back to auth0 login screen. Can I bypass this? Why does the user need to login again?

Anyway, can I at least pre-fill the email parameter? I set “includeEmailInRedirect”: true so I expect to receive an email parameter so that I can prefill the email via login_hint but I don’t receive it. This works for the verify email link but not the password reset link for some reason.

This is the succes response after a password reset:
{
“title”: “Change Password”,
“email”: “thibault.mahieu94+414422@gmail.com”,
“body”: {
“newPassword”: “",
“confirmNewPassword”: "
”,
“ticket”: “",
“tenant”: “dev-pgl3xdef5exo8uqt”
},
“query”: {
“user_id”: “67c57364b043ed8682775c3c”,
“email”: “thibault.mahieu94+414422@gmail.com”,
“username”: null,
“identifier”: {
“value”: “thibault.mahieu94+414422@gmail.com
},
“newPassword”: "
”,
“tenant”: “dev-pgl3xdef5exo8uqt”,
“client_id”: “vnJHfkPZLB73R2URTYcs3f0lpDQWZebT”,
“connection”: “staging”,
“resultUrl”: “{{ application.callback_domain }}/auth0/login?next={% if application.name == ‘Atticus’ %}https%3A%2F%2Fapp.tiro.health{% else %}https%3A%2F%2Fapp-staging.tiro.health{% endif %}”,
“ext_params”: null,
“transaction_id”: null,
“markEmailAsVerified”: true,
“includeEmailInRedirect”: true
}
}

But this is what I receive (no email in the parameters)
/auth0/login?iss=https%3A%2F%2Fauth0.tiro.health%2F

Is this a bug in auth0?

Hi @thibault.mahieu,

Welcome to the Auth0 Community!

Unfortunately, being asked to login after a password reset is the intended behavior. However, if you would like to see your desired behavior be implemented, you can make a feature request here:

Also can you provide the body of the request that you’re making so that we can take a closer look?

Have a good one,
Vlad

Hi Vlad,

I can understand that the user needs to login again. However, then I would like the email parameter to be present in the redirect url (as indicated by the includeEmailInRedirect). To me that seems safe and possible.
If that’s not possible then I wonder what’s the intended flow for a user invitation is? I want as few required actions for my end users as possible.

Here is how I do my request:
response = await client.post(
f"https://{domain}/dbconnections/change_password",
json={
“email”: “thibault.mahieu94+414422@gmail.com”,
“connection”: “staging”,
“includeEmailInRedirect”: True,
“client_id”: “vnJHfkPZLB73R2URTYcs3f0lpDQWZebT”,
},

I also tried with a password reset ticket (but I have the same issue):
https://auth0.com/docs/api/management/v2/tickets/post-password-change

{
“request”: {
“method”: “post”,
“path”: “/api/v2/tickets/password-change”,
“query”: {},
“userAgent”: “python-httpx/0.23.3”,
“body”: {
“user_id”: “auth0|67c6b5da260c430c025e56bf”,
“mark_email_as_verified”: true,
“includeEmailInRedirect”: true
},
“channel”: “api”,
“ip”: “2a02:a03f:eaf0:7000:1575:9f79:1cdf:e27f”,
“auth”: {
“user”: {},
“strategy”: “jwt”,
“credentials”: {
“scopes”: [
“read:client_grants”,
“create:client_grants”,
“delete:client_grants”,
“update:client_grants”,
“read:users”,
“update:users”,
“delete:users”,
“create:users”,
“read:users_app_metadata”,
“update:users_app_metadata”,
“delete:users_app_metadata”,
“create:users_app_metadata”,
“read:user_custom_blocks”,
“create:user_custom_blocks”,
“delete:user_custom_blocks”,
“create:user_tickets”,
“read:clients”,
“update:clients”,
“delete:clients”,
“create:clients”,
“read:client_keys”,
“update:client_keys”,
“delete:client_keys”,
“create:client_keys”,
“read:connections”,
“update:connections”,
“delete:connections”,
“create:connections”,
“read:resource_servers”,
“update:resource_servers”,
“delete:resource_servers”,
“create:resource_servers”,
“read:device_credentials”,
“update:device_credentials”,
“delete:device_credentials”,
“create:device_credentials”,
“read:rules”,
“update:rules”,
“delete:rules”,
“create:rules”,
“read:rules_configs”,
“update:rules_configs”,
“delete:rules_configs”,
“read:hooks”,
“update:hooks”,
“delete:hooks”,
“create:hooks”,
“read:actions”,
“update:actions”,
“delete:actions”,
“create:actions”,
“read:email_provider”,
“update:email_provider”,
“delete:email_provider”,
“create:email_provider”,
“blacklist:tokens”,
“read:stats”,
“read:insights”,
“read:tenant_settings”,
“update:tenant_settings”,
“read:logs”,
“read:logs_users”,
“read:shields”,
“create:shields”,
“update:shields”,
“delete:shields”,
“read:anomaly_blocks”,
“delete:anomaly_blocks”,
“update:triggers”,
“read:triggers”,
“read:grants”,
“delete:grants”,
“read:guardian_factors”,
“update:guardian_factors”,
“read:guardian_enrollments”,
“delete:guardian_enrollments”,
“create:guardian_enrollment_tickets”,
“read:user_idp_tokens”,
“create:passwords_checking_job”,
“delete:passwords_checking_job”,
“read:custom_domains”,
“delete:custom_domains”,
“create:custom_domains”,
“update:custom_domains”,
“read:email_templates”,
“create:email_templates”,
“update:email_templates”,
“read:mfa_policies”,
“update:mfa_policies”,
“read:roles”,
“create:roles”,
“delete:roles”,
“update:roles”,
“read:prompts”,
“update:prompts”,
“read:branding”,
“update:branding”,
“delete:branding”,
“read:log_streams”,
“create:log_streams”,
“delete:log_streams”,
“update:log_streams”,
“create:signing_keys”,
“read:signing_keys”,
“update:signing_keys”,
“read:limits”,
“update:limits”,
“create:role_members”,
“read:role_members”,
“delete:role_members”,
“read:entitlements”,
“read:attack_protection”,
“update:attack_protection”,
“read:organizations_summary”,
“create:authentication_methods”,
“read:authentication_methods”,
“update:authentication_methods”,
“delete:authentication_methods”,
“read:organizations”,
“update:organizations”,
“create:organizations”,
“delete:organizations”,
“create:organization_members”,
“read:organization_members”,
“delete:organization_members”,
“create:organization_connections”,
“read:organization_connections”,
“update:organization_connections”,
“delete:organization_connections”,
“create:organization_member_roles”,
“read:organization_member_roles”,
“delete:organization_member_roles”,
“create:organization_invitations”,
“read:organization_invitations”,
“delete:organization_invitations”,
“read:scim_config”,
“create:scim_config”,
“update:scim_config”,
“delete:scim_config”,
“create:scim_token”,
“read:scim_token”,
“delete:scim_token”,
“delete:phone_providers”,
“create:phone_providers”,
“read:phone_providers”,
“update:phone_providers”,
“delete:phone_templates”,
“create:phone_templates”,
“read:phone_templates”,
“update:phone_templates”,
“create:encryption_keys”,
“read:encryption_keys”,
“update:encryption_keys”,
“delete:encryption_keys”,
“read:sessions”,
“delete:sessions”,
“read:refresh_tokens”,
“delete:refresh_tokens”,
“create:self_service_profiles”,
“read:self_service_profiles”,
“update:self_service_profiles”,
“delete:self_service_profiles”,
“create:sso_access_tickets”,
“delete:sso_access_tickets”,
“read:forms”,
“update:forms”,
“delete:forms”,
“create:forms”,
“read:flows”,
“update:flows”,
“delete:flows”,
“create:flows”,
“read:flows_vault”,
“read:flows_vault_connections”,
“update:flows_vault_connections”,
“delete:flows_vault_connections”,
“create:flows_vault_connections”,
“read:flows_executions”,
“delete:flows_executions”,
“read:connections_options”,
“update:connections_options”,
“read:self_service_profile_custom_texts”,
“update:self_service_profile_custom_texts”,
“read:client_credentials”,
“create:client_credentials”,
“update:client_credentials”,
“delete:client_credentials”,
“read:organization_client_grants”,
“create:organization_client_grants”,
“delete:organization_client_grants”
]
}
}
},
“response”: {
“statusCode”: 201,
“body”: {}
}
}

This Knowledge Article might be of help:

You need to use the Management API and in your request you need to also specify the result_url. If no result_url is passed but client_id is, it will default to the Application’s Default Login URL so you can also set that up in your settings.

You can also follow these steps to see best practices for user invites:

If you have any other questions feel free to let us know.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.