Ver Fonte

Merge pull request #4045 from weseek/imprv/gw6776-create-password-reset-page

Imprv/gw6776 create password reset page
cao há 4 anos atrás
pai
commit
519e5e3963

+ 22 - 0
src/client/js/components/PasswordResetExecutionForm.jsx

@@ -0,0 +1,22 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import { withTranslation } from 'react-i18next';
+
+
+const PasswordResetExecutionForm = (props) => {
+  // TODO: apply i18n by GW-6861
+  // const { t } = props;
+
+  return (
+    // TODO: improve the form by GW-6852
+    <div>
+      PasswordResetExecutionForm
+    </div>
+  );
+};
+
+PasswordResetExecutionForm.propTypes = {
+  t: PropTypes.func.isRequired, //  i18next
+};
+
+export default withTranslation()(PasswordResetExecutionForm);

+ 1 - 0
src/client/js/components/PasswordResetRequestForm.jsx

@@ -4,6 +4,7 @@ import { withTranslation } from 'react-i18next';
 
 
 const PasswordResetRequestForm = (props) => {
+  // TODO: apply i18n by GW-6861
   // const { t } = props;
 
   return (

+ 13 - 0
src/client/js/nologin.jsx

@@ -10,6 +10,7 @@ import AppContainer from './services/AppContainer';
 import InstallerForm from './components/InstallerForm';
 import LoginForm from './components/LoginForm';
 import PasswordResetRequestForm from './components/PasswordResetRequestForm';
+import PasswordResetExecutionForm from './components/PasswordResetExecutionForm';
 
 const i18n = i18nFactory();
 
@@ -90,3 +91,15 @@ if (passwordResetRequestFormElem) {
     passwordResetRequestFormElem,
   );
 }
+
+// render PasswordResetRequestForm
+const passwordResetExecutionFormElem = document.getElementById('password-reset-execution-form');
+if (passwordResetExecutionFormElem) {
+
+  ReactDOM.render(
+    <I18nextProvider i18n={i18n}>
+      <PasswordResetExecutionForm />
+    </I18nextProvider>,
+    passwordResetExecutionFormElem,
+  );
+}

+ 4 - 0
src/server/routes/forgot-password.js

@@ -9,6 +9,10 @@ module.exports = function(crowi, app) {
     return res.render('forgot-password');
   };
 
+  actions.resetPassword = async function(req, res) {
+    return res.render('reset-password');
+  };
+
 
   async function sendPasswordResetEmail() {
 

+ 2 - 0
src/server/routes/index.js

@@ -178,6 +178,8 @@ module.exports = function(crowi, app) {
 
   app.get('/forgot-password', forgotPassword.forgotPassword);
   app.post('/forgot-password', forgotPassword.api.post);
+  // TODO: apply oneTimeToken to the link by GW−6856
+  app.get('/forgot-password/hogeToken', forgotPassword.resetPassword);
 
   app.get('/share/:linkId', page.showSharedPage);
 

+ 34 - 0
src/server/views/reset-password.html

@@ -0,0 +1,34 @@
+{% extends './layout/layout.html' %}
+
+{% block html_title %}{{ customizeService.generateCustomTitleForFixedPageName(t('forgot_password')) }}{% endblock %}
+
+
+{#
+  # Remove default contents
+  #}
+ {% block html_head_loading_legacy %}
+ {% endblock %}
+ {% block html_head_loading_app %}
+ {% endblock %}
+ {% block layout_head_nav %}
+ {% endblock %}
+ {% block sidebar %}
+ {% endblock %}
+ {% block head_warn_alert_siteurl_undefined %}
+ {% endblock %}
+ {% block fixed-controls %}
+ {% endblock %}
+
+ {% block html_additional_headers %}
+   <script src="{{ webpack_asset('js/nologin.js') }}" defer></script>
+ {% endblock %}
+
+{% block layout_main %}
+
+  <div id="main" class="main">
+    <div id="content-main" class="content-main container-lg">
+      <div id="password-reset-execution-form"></div>
+    </div>
+  </div>
+
+{% endblock %}