Просмотр исходного кода

success to access password-reset-execution form with one time Url

kaori 4 лет назад
Родитель
Сommit
834dddaf93

+ 8 - 3
src/server/middlewares/password-reset.js

@@ -1,10 +1,15 @@
 module.exports = (crowi, app) => {
 module.exports = (crowi, app) => {
   const PasswordResetOrder = crowi.model('PasswordResetOrder');
   const PasswordResetOrder = crowi.model('PasswordResetOrder');
 
 
-  return (req, res, next) => {
-    // const { token } = req.params;
+  return async(req, res, next) => {
     const { token } = req.query;
     const { token } = req.query;
-    const passwordResetOrder = PasswordResetOrder.findOne({ token });
+
+    const passwordResetOrder = await PasswordResetOrder.findOne({ token });
+    console.log('passwordResetOrder', passwordResetOrder);
+
+    if (passwordResetOrder == null) {
+      return res.redirect('/login');
+    }
 
 
     // http://localhost:3000/forgot-password/token?token=hoge
     // http://localhost:3000/forgot-password/token?token=hoge
 
 

+ 1 - 1
src/server/models/password-reset-order.js

@@ -17,7 +17,7 @@ class PasswordResetOrder {
 
 
   static generateOneTimeToken() {
   static generateOneTimeToken() {
     const buf = crypto.randomBytes(256);
     const buf = crypto.randomBytes(256);
-    const token = buf.toString('base64');
+    const token = buf.toString('hex');
 
 
     return token;
     return token;
   }
   }

+ 1 - 1
src/server/routes/forgot-password.js

@@ -38,7 +38,7 @@ module.exports = function(crowi, app) {
 
 
     try {
     try {
       const passwordResetOrderData = await PasswordResetOrder.createPasswordResetOrder(email);
       const passwordResetOrderData = await PasswordResetOrder.createPasswordResetOrder(email);
-      const url = new URL(`/forgot-password/token?${passwordResetOrderData.token}`, appUrl);
+      const url = new URL(`/forgot-password/hoge?token=${passwordResetOrderData.token}`, appUrl);
       const oneTimeUrl = url.href;
       const oneTimeUrl = url.href;
       await sendPasswordResetEmail(email, oneTimeUrl, i18n);
       await sendPasswordResetEmail(email, oneTimeUrl, i18n);
       return res.json(ApiResponse.success());
       return res.json(ApiResponse.success());