Przeglądaj źródła

Merge branch 'feat/password-rsettings-by-users' into imprv/gw6802-generate-unique-token

# Conflicts:
#	src/server/routes/forgot-password.js
kaori 4 lat temu
rodzic
commit
9801ca33fe

+ 18 - 4
src/client/js/components/PasswordResetExecutionForm.jsx

@@ -8,10 +8,24 @@ const PasswordResetExecutionForm = (props) => {
   // const { t } = props;
 
   return (
-    // TODO: improve the form by GW-6852
-    <div>
-      PasswordResetExecutionForm
-    </div>
+    <form role="form" className="form" method="post">
+      <div className="form-group">
+        <div className="input-group">
+          <input name="password" placeholder="New Password" className="form-control" type="password" />
+        </div>
+      </div>
+      <div className="form-group">
+        <div className="input-group">
+          <input name="password" placeholder="Confirm the new password" className="form-control" type="password" />
+        </div>
+      </div>
+      <div className="form-group">
+        <input name="reset-password-btn" className="btn btn-lg btn-primary btn-block" value="Reset Password" type="submit" />
+      </div>
+      <a href="/login">
+        <i className="icon-login mr-1"></i>Sign in instead
+      </a>
+    </form>
   );
 };
 

+ 11 - 26
src/client/js/components/PasswordResetRequestForm.jsx

@@ -8,34 +8,19 @@ const PasswordResetRequestForm = (props) => {
   // const { t } = props;
 
   return (
-    <>
-      <div className="container">
-        <div className="row justify-content-md-center">
-          <div className="col-md-6 mt-5">
-            <div className="text-center">
-              <h1><i className="icon-lock large"></i></h1>
-              <h2 className="text-center">Forgot Password?</h2>
-              <p>You can reset your password here.</p>
-              <form role="form" className="form" method="post">
-                <div className="form-group">
-                  <div className="input-group">
-                    <input name="email" placeholder="email address" className="form-control" type="email" />
-                  </div>
-                </div>
-                <div className="form-group">
-                  <input name="reset-password-btn" className="btn btn-lg btn-primary btn-block" value="Reset Password" type="submit" />
-                </div>
-                <a href="/login">
-                  <i className="icon-login mr-1"></i>Return to login
-                </a>
-              </form>
-            </div>
-          </div>
-
+    <form role="form" className="form" method="post">
+      <div className="form-group">
+        <div className="input-group">
+          <input name="email" placeholder="E-mail Address" className="form-control" type="email" />
         </div>
       </div>
-
-    </>
+      <div className="form-group">
+        <input name="reset-password-btn" className="btn btn-lg btn-primary btn-block" value="Reset Password" type="submit" />
+      </div>
+      <a href="/login">
+        <i className="icon-login mr-1"></i>Return to login
+      </a>
+    </form>
   );
 };
 

+ 8 - 5
src/server/routes/forgot-password.js

@@ -5,7 +5,8 @@ const ApiResponse = require('../util/apiResponse');
 
 module.exports = function(crowi, app) {
   const PasswordResetOrder = mongoose.model('PasswordResetOrder');
-  const { /* appService, */ mailService } = crowi;
+  const { /* appService, */ mailService, configManager } = crowi;
+  // const { /* appService, */ mailService, configManager } = crowi;
   const path = require('path');
   const actions = {};
   const api = {};
@@ -20,13 +21,12 @@ module.exports = function(crowi, app) {
   };
 
 
-  async function sendPasswordResetEmail() {
+  async function sendPasswordResetEmail(i18n) {
 
     return mailService.send({
       to: 'hoge@example.com',
       subject: 'forgotPasswordMailTest',
-      // TODO: apply i18n by GW-6833
-      template: path.join(crowi.localeDir, 'en_US/notifications/passwordReset.txt'),
+      template: path.join(crowi.localeDir, `${i18n}/notifications/passwordReset.txt`),
       // TODO: need to set appropriate values by GW-6828
       // vars: {
       //   appTitle: appService.getAppTitle(),
@@ -50,7 +50,10 @@ module.exports = function(crowi, app) {
       return res.json(ApiResponse.error(msg));
     }
 
-    await sendPasswordResetEmail();
+    const grobalLang = configManager.getConfig('crowi', 'app:globalLang');
+    const i18n = req.language || grobalLang;
+
+    await sendPasswordResetEmail(i18n);
     return;
   };
 

+ 12 - 1
src/server/views/forgot-password.html

@@ -27,7 +27,18 @@
 
   <div id="main" class="main">
     <div id="content-main" class="content-main container-lg">
-      <div id="password-reset-request-form"></div>
+      <div class="container">
+        <div class="row justify-content-md-center">
+          <div class="col-md-6 mt-5">
+            <div class="text-center">
+              <h1><i class="icon-lock large"></i></h1>
+              <h2 class="text-center">Forgot Password?</h2>
+              <p>You can reset your password here.</p>
+              <div id="password-reset-request-form"></div>
+            </div>
+          </div>
+        </div>
+      </div>
     </div>
   </div>
 

+ 15 - 1
src/server/views/reset-password.html

@@ -27,7 +27,21 @@
 
   <div id="main" class="main">
     <div id="content-main" class="content-main container-lg">
-      <div id="password-reset-execution-form"></div>
+      <div class="container">
+        <div class="row justify-content-md-center">
+          <div class="col-md-6 mt-5">
+            <div class="text-center">
+              <h1><i class="icon-lock-open large"></i></h1>
+              <h2 class="text-center">Reset Password</h2>
+              <!-- TODO: show user email by GW-6778 -->
+              <p>Enter a new password for foo@example.com.</p>
+              <div id="password-reset-execution-form"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+
+    </div>
     </div>
   </div>