[Node JS] # Change Password
Protector and public only Middleware
1. session
2. Implementation
export const protectorMiddleware = (req, res, next) => {
if (req.session.loggedIn) {
return next();
} else {
return res.redirect("/login");
}
};
export const publicOnlyMiddleware = (req, res, next) => {
if (!req.session.loggedIn) {
return next();
} else {
return res.redirect("/");
}
};
Change Password
現在のユーザーパスワードが入力したold passwordと一致していることを確認します.
確認パスワードが確認と一致
DBとセッションのユーザーパスワードを変更してログアウト
export const postChangePassword = async (req, res) => {
const {
body: { oldPassword, newPassword, newPasswordConfirmation },
session: {
user: { _id },
},
} = req;
const user = await User.findById(_id);
const ok = await bcrypt.compare(oldPassword, user.password);
if (!ok) {
return res.status(400).render("users/change-password", {
pageTitle: "change Password",
errorMessage: "The current password is incorrect",
});
}
if (newPassword !== newPasswordConfirmation) {
return res.status(400).render("users/change-password", {
pageTitle: "change Password",
errorMessage: "The password does not match the confirmation",
});
}
user.password = newPassword;
await user.save();
return res.redirect("/users/logout");
};
Reference
この問題について([Node JS] # Change Password), 我々は、より多くの情報をここで見つけました https://velog.io/@choiish98/Node-JS-Change-Passwordテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol