'How to redirect a user from django to react during email account activation
I have spent days looking for solution to this but I keep walking round in circles. I have a react application that is receiving API from django. Every part of the react app and django is working individually. With postman I can test the APIs account for email verification and the user gets verified. When I fill account registration form in react and submit it, the user is sent an email confirmation message. When I click on the activation link I got 'Page not found 'error. How do I redirect the user to react since the email activation link is created in django and as such has django domain and not react domain.
React App
function App() {
return (
<Router>
<Header />
<main className="py-3">
<>
<Route path='/signup' component={SignUpScreen} />
<Route exact path='/activate/:uid/:token' component={ ActivateAccount} />
</>
</main>
</Router>
);
}
Account Activation Component
const ActivateAccount = ({ verify, match }) => {
const [verified, setVerified] = useState(false);
const dispatch = useDispatch()
const verify_account = e => {
const uid = match.params.uid;
const token = match.params.token;
dispatch(verify(uid, token));
setVerified(true);
};
if (verified) {
return <Redirect to='/' />
}
return (
<Container className=' auth-container pt-4'>
<Form className="auth-form">
<Button
className="auth-button btn btn-block w-100"
type="submit"
onClick={verify_account}
>
Activate Account
</Button>
</Form>
</Container>
)
}
export default connect(null, { verify })(ActivateAccount);
urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('djoser.urls')),
path('api/', include('djoser.urls.jwt')),
path('api/', include('accounts.urls')),
]
settings.py
DJOSER = {
'SEND_CONFIRMATION_EMAIL': True,
'USER_CREATE_PASSWORD_RETYPE': True,
'LOGIN_FIELD': 'email',
'SET_USERNAME_RETYPE': True,
'SET_PASSWORD_RETYPE': True,
'ACTIVATION_URL': 'activate/{uid}/{token}',
'SEND_ACTIVATION_EMAIL': True,
'SERIALIZERS': {
'user_create': 'accounts.serializers.UserCreateSerializer',
'user': 'accounts.serializers.UserCreateSerializer',
'current_user': 'accounts.serializers.UserCreateSerializer',
}
}
Please any help on how I can accomplish this is highly cherished
Solution 1:[1]
Seems to me that your best option is to have the generated activation url point to your React domain, have the information needed hashed in a url query param, and then call the /activate endpoint from within your React app.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Davis Owen |
