There are two views used in the email registration / change workflow:
rest_registration.api.views.register_email
rest_registration.api.views.verify_email
Assuming that the Django REST Registration views are served at https://backend-host/api/v1/accounts/
then the register_email
, verify_email
views are served as:
https://backend-host/api/v1/accounts/register-email/
https://backend-host/api/v1/accounts/verify-email/
accordingly.
Let's describe it by example. We're assuming that:
- the Django REST Registration views are served at
https://backend-host/api/v1/accounts/
- you have
register-email-verification-enabled-setting
set toTrue
(this by default) - you configured
register-email-verification-url-setting
to behttps://frontend-host/verify-email/
Then the verification workflow looks as follows:
- The user who wants to register new email (which is currently equivalent to changing the e-mail) sends AJAX POST request to
https://backend-host/api/v1/accounts/register-email/
endpoint. Usually this happens via front-end aplication, which could be hosted onhttps://frontend-host/
. Assuming the registration was correct, The
register_email
endpoint will generate an e-mail which will contain an URL which the user should click to register new e-mail. the URL would be in a form:https://frontend-host/verify-email/?user_id=<user id>&email=<email>×tamp=<timestamp>&signature=<signature>
(You can change the way the URL is generated by overriding
verification-url-builder-setting
)The frontend endpoint (which is not provided by Django REST Registration)
https://frontend-host/verify-email/
would receive following GET parameters:user_id
email
timestamp
signature
and then it should perform AJAX request to
https://backend-host/api/v1/accounts/verify-email/
via HTTP POST with following JSON payload:{ "user_id": "<user id>", "email": "<email>", "timestamp": "<timestamp>", "signature": "<signature>" }
and then show a message to the user depending on the response from backend server.
rest_registration.api.serializers.DefaultRegisterEmailSerializer
These settings can be used to configure email registration workflow. You should add them as keys (with values) to your settings.REST_REGISTRATION
dict.
detailed_configuration__register_email