forgot-password.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. const logger = require('@alias/logger')('growi:routes:forgot-password');
  2. const ApiResponse = require('../util/apiResponse');
  3. module.exports = function(crowi, app) {
  4. const PasswordResetOrder = crowi.model('PasswordResetOrder');
  5. const { /* appService, */ mailService, configManager } = crowi;
  6. const path = require('path');
  7. const actions = {};
  8. const api = {};
  9. actions.api = api;
  10. actions.forgotPassword = async function(req, res) {
  11. return res.render('forgot-password');
  12. };
  13. actions.resetPassword = async function(req, res) {
  14. return res.render('reset-password');
  15. };
  16. async function sendPasswordResetEmail(i18n) {
  17. return mailService.send({
  18. to: 'hoge@example.com',
  19. subject: 'forgotPasswordMailTest',
  20. template: path.join(crowi.localeDir, `${i18n}/notifications/passwordReset.txt`),
  21. // TODO: need to set appropriate values by GW-6828
  22. // vars: {
  23. // appTitle: appService.getAppTitle(),
  24. // email: 'hoge@gmail.com',
  25. // url: 'https://www.google.com/',
  26. // },
  27. });
  28. }
  29. api.post = async function(req, res) {
  30. // TODO: using email getting by password reset request form by GW-6828
  31. const email = 'foo@example.com';
  32. try {
  33. const passwordResetOrderData = await PasswordResetOrder.createPasswordResetOrder(email);
  34. res.send(ApiResponse.success({ passwordResetOrderData }));
  35. }
  36. catch (err) {
  37. const msg = 'Error occurred during password reset request procedure';
  38. logger.error(err);
  39. return res.json(ApiResponse.error(msg));
  40. }
  41. const grobalLang = configManager.getConfig('crowi', 'app:globalLang');
  42. const i18n = req.language || grobalLang;
  43. await sendPasswordResetEmail(i18n);
  44. return;
  45. };
  46. return actions;
  47. };