У меня есть маршрут express, который выполняется после того, как nodemailer отправит пользователю электронное письмо с подтверждением.
router.route('/confirmation/:token').get((req, res, next) => {
try {
Token.findOne({ token: req.params.token }, function(err, token) {
if (err)
return res.status(404).send({
type: 'not-verified',
msg: 'We were unable to find a valid token. Your token my have expired.'
});
// If we found a token, find a matching user
User.findOne({ _id: token._userId, email: req.body.username }, function(err, user) {
if (err)
return res
.status(404)
.send({ msg: 'We were unable to find a user for this token.' });
if (user.isVerified)
return res.status(400).send({
type: 'already-verified',
msg: 'This user has already been verified.'
});
// Verify and save the user
user.isVerified = true;
user.save(function(err) {
if (err) {
return res.status(500).send({ msg: err.message });
}
return res
.status(200)
.send({
msg: [
'The account has been verified. Please log in.',
{ userVerified: user.isVerified }
]
})
.redirect('/login');
});
});
});
} catch (err) {
return next(err);
}
});
E-mail:
Здравствуйте! Пожалуйста, подтвердите свой аккаунт по нажав на ссылку: http://localhost: 8016 / пользователи / подтверждение / a217ba992e977079eeeca541677fedcb
Естественно и ожидаемо, что мне потребуется: http://localhost:8016/users/confirmation/a217ba992e977079eeeca541677fedcb
И получить как ответ:
{
"msg": [
"The account has been verified. Please log in.",
{
"userVerified": true
}
]
}
Но я хочу использовать эти данные через маршрутизатор React. Чтобы сделать модальный или другой компонент, используйте его. По сути, получить эти данные для поддержки моих маршрутов на клиенте.
Что-то вроде:
function PrivateRoute({ children, ...rest }) {
return (
<Route
{...rest}
render={({ location, props }) =>
isLoggedIn ? (
children
) : (
<Redirect
to={{
pathname: '/',
state: { from: location }
}}
/>
)
}
/>
);
}
<PrivateRoute path={`/users/confirmation/${params.token}`}>
{
<Modal
isAlertModal={false}
history={history}
affirmativeUsed="Yes"
message="You have now completed your registration!"
modalActive={true}
/>
}
</PrivateRoute>
Заранее спасибо!