Browse Source

fix: add missing rendering logic

Signed-off-by: Wing-Kam Wong <wingkwong.code@gmail.com>
pull/1829/head
Wing-Kam Wong 2 years ago
parent
commit
7f8f636263
  1. 40
      packages/nocodb/src/lib/noco/meta/api/userApi/userApis.ts

40
packages/nocodb/src/lib/noco/meta/api/userApi/userApis.ts

@ -269,8 +269,8 @@ async function passwordForgot(req: Request<any, any>, res): Promise<any> {
}
const email = _email.toLowerCase();
const user = await User.getByEmail(email);
if (user) {
const token = uuidv4();
await User.update(user.id, {
@ -286,15 +286,16 @@ async function passwordForgot(req: Request<any, any>, res): Promise<any> {
subject: 'Password Reset Link',
text: `Visit following link to update your password : ${
(req as any).ncSiteUrl
}/password/reset/${token}.`,
}/api/v1/db/auth/password/reset/${token}.`,
html: ejs.render(template, {
resetLink: (req as any).ncSiteUrl + `/password/reset/${token}`
resetLink: (req as any).ncSiteUrl + `/api/v1/db/auth/password/reset/${token}`
})
})
);
} catch (e) {
console.log(
'Warning : `mailSend` failed, Please configure emailClient configuration.'
console.log(e)
return NcError.badRequest(
'Email Plugin is not found. Please contact administrators to configure it in App Store first.'
);
}
@ -305,12 +306,16 @@ async function passwordForgot(req: Request<any, any>, res): Promise<any> {
description: `requested for password reset `,
ip: (req as any).clientIp
});
} else {
return NcError.badRequest(
'Your email has not been registered.'
);
}
res.json({ msg: 'Check your email if you are registered with us.' });
res.json({ msg: 'Please check your email to reset the password' });
}
async function tokenValidate(req, res): Promise<any> {
const token = req.params.token;
const token = req.params.tokenId;
const user = await Noco.ncMeta.metaGet(null, null, MetaTable.USERS, {
reset_password_token: token
@ -326,7 +331,7 @@ async function tokenValidate(req, res): Promise<any> {
}
async function passwordReset(req, res): Promise<any> {
const token = req.params.token;
const token = req.params.tokenId;
const user = await Noco.ncMeta.metaGet(null, null, MetaTable.USERS, {
reset_password_token: token
@ -364,7 +369,7 @@ async function passwordReset(req, res): Promise<any> {
}
async function emailVerification(req, res): Promise<any> {
const token = req.params.token;
const token = req.params.tokenId;
const user = await Noco.ncMeta.metaGet(null, null, MetaTable.USERS, {
email_verification_token: token
@ -428,6 +433,19 @@ async function refreshToken(req, res): Promise<any> {
}
}
async function renderPasswordReset(req, res): Promise<any> {
try {
res.send(
ejs.render((await import('./ui/auth/resetPassword')).default, {
token: JSON.stringify(req.params.tokenId),
baseUrl: `/`
})
);
} catch (e) {
return res.status(400).json({ msg: e.message });
}
}
const mapRoutes = router => {
// todo: old api - /auth/signup?tool=1
router.post('/auth/user/signup', catchError(signup));
@ -472,5 +490,9 @@ const mapRoutes = router => {
'/api/v1/db/auth/token/refresh',
ncMetaAclMw(refreshToken, 'refreshToken')
);
router.get(
'/api/v1/db/auth/password/reset/:tokenId',
catchError(renderPasswordReset)
);
};
export { mapRoutes as userApis };

Loading…
Cancel
Save