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

show message for whithout setup

itizawa 6 лет назад
Родитель
Сommit
e0950e7d2f

+ 1 - 0
resource/locales/en-US/translation.json

@@ -389,6 +389,7 @@
     "admin_and_author": "Admin and Author",
     "anyone": "Anyone",
     "Authentication mechanism settings": "Authentication Mechanism Settings",
+    "setup_is_not_yet_complete": "Setup is not yet complete",
     "alert_siteUrl_is_not_set": "'Site URL' is NOT set. Set it from the {{link}}",
     "xss_prevent_setting": "Prevent XSS(Cross Site Scripting)",
     "xss_prevent_setting_link": "Go to Markdown settings",

+ 1 - 0
resource/locales/ja/translation.json

@@ -386,6 +386,7 @@
     "admin_and_author": "管理者とページ作者が可能",
     "anyone": "誰でも可能",
     "Authentication mechanism settings": "認証機構設定",
+    "setup_is_not_yet_complete":"セットアップはまだ完了してません",
     "alert_siteUrl_is_not_set": "'サイトURL' が設定されていません。{{link}} から設定してください。",
     "xss_prevent_setting": "XSS(Cross Site Scripting)対策設定",
     "xss_prevent_setting_link": "マークダウン設定ページに移動",

+ 22 - 8
src/client/js/components/Admin/Security/LocalSecuritySetting.jsx

@@ -35,9 +35,10 @@ class LocalSecuritySetting extends React.Component {
 
 
   async onClickSubmit() {
-    const { t, adminLocalSecurityContainer } = this.props;
+    const { t, adminGeneralSecurityContainer, adminLocalSecurityContainer } = this.props;
     try {
       await adminLocalSecurityContainer.updateLocalSecuritySetting();
+      await adminGeneralSecurityContainer.retrieveSetupStratedies();
       toastSuccess(t('security_setting.updated_general_security_setting'));
     }
     catch (err) {
@@ -91,6 +92,13 @@ class LocalSecuritySetting extends React.Component {
 
         {adminGeneralSecurityContainer.state.isLocalEnabled && (
           <div>
+            {!adminGeneralSecurityContainer.state.setupStrategies.includes('local')
+              && (
+              <p className="alert alert-warning">
+                <small>{this.props.t('security_setting.setup_is_not_yet_complete')}</small>
+              </p>
+            )}
+
             <div className="row mb-5">
               <strong className="col-xs-3 text-right">{t('Register limitation')}</strong>
               <div className="col-xs-9 text-left">
@@ -156,16 +164,22 @@ class LocalSecuritySetting extends React.Component {
                 </div>
               </div>
             </div>
+
+            <div className="row my-3">
+              <div className="col-xs-offset-3 col-xs-5">
+                <button
+                  type="button"
+                  className="btn btn-primary"
+                  disabled={adminLocalSecurityContainer.state.retrieveError != null}
+                  onClick={this.onClickSubmit}
+                >
+                  {t('Update')}
+                </button>
+              </div>
+            </div>
           </div>
         )}
 
-        <div className="row my-3">
-          <div className="col-xs-offset-3 col-xs-5">
-            <button type="button" className="btn btn-primary" disabled={adminLocalSecurityContainer.state.retrieveError != null} onClick={this.onClickSubmit}>
-              {t('Update')}
-            </button>
-          </div>
-        </div>
 
       </React.Fragment>
     );

+ 17 - 0
src/client/js/services/AdminGeneralSecurityContainer.js

@@ -31,12 +31,14 @@ export default class AdminGeneralSecurityContainer extends Container {
       isGoogleEnabled: false,
       isGitHubEnabled: false,
       isTwitterEnabled: false,
+      setupStrategies: [],
     };
 
     this.onIsWikiModeForced = this.onIsWikiModeForced.bind(this);
   }
 
   async retrieveSecurityData() {
+    await this.retrieveSetupStratedies();
     const response = await this.appContainer.apiv3.get('/security-setting/');
     const { generalSetting, generalAuth } = response.data.securityParams;
     this.onIsWikiModeForced(generalSetting.wikiMode);
@@ -132,6 +134,7 @@ export default class AdminGeneralSecurityContainer extends Container {
         isEnabled,
         authId,
       });
+      await this.retrieveSetupStratedies();
       this.setState({ [stateVariableName]: isEnabled });
     }
     catch (err) {
@@ -139,6 +142,20 @@ export default class AdminGeneralSecurityContainer extends Container {
     }
   }
 
+  /**
+   * Retrieve SetupStratedies
+   */
+  async retrieveSetupStratedies() {
+    try {
+      const response = await this.appContainer.apiv3.get('/security-setting/authentication');
+      const { setupStrategies } = response.data;
+      this.setState({ setupStrategies });
+    }
+    catch (err) {
+      toastError(err);
+    }
+  }
+
   /**
    * Switch local enabled
    */

+ 6 - 0
src/server/routes/apiv3/security-setting.js

@@ -466,6 +466,12 @@ module.exports = (crowi) => {
 
   });
 
+  // TODO swagger
+  router.get('/authentication/', loginRequiredStrictly, adminRequired, async(req, res) => {
+    const setupStrategies = await crowi.passportService.getSetupStrategies();
+
+    return res.apiv3({ setupStrategies });
+  });
   /**
    * @swagger
    *