Przeglądaj źródła

return 405 error without setup ldap strategy

itizawa 6 lat temu
rodzic
commit
319abb2458

+ 3 - 1
src/client/js/components/Me/AssociateModal.jsx

@@ -43,8 +43,10 @@ class AssociateModal extends React.Component {
 
   async onClickAddBtn() {
     const { t, personalContainer } = this.props;
+    const { username, password } = this.state;
+
     try {
-      await personalContainer.associateLdapAccount();
+      await personalContainer.associateLdapAccount({ username, password });
       toastSuccess(t('security_setting.updated_general_security_setting'));
     }
     catch (err) {

+ 11 - 2
src/client/js/services/PersonalContainer.js

@@ -220,8 +220,17 @@ export default class PersonalContainer extends Container {
   /**
    * Associate LDAP account
    */
-  async associateLdapAccount() {
-    // TODO create apiV3 for associate LDAP account
+  async associateLdapAccount(account) {
+    try {
+      return this.appContainer.apiv3.put('/personal-setting/associateLdap', {
+        account,
+      });
+    }
+    catch (err) {
+      this.setState({ retrieveError: err });
+      logger.error(err);
+      throw new Error('Failed to associate ldap account');
+    }
   }
 
 }

+ 12 - 0
src/server/routes/apiv3/personal-setting.js

@@ -292,5 +292,17 @@ module.exports = (crowi) => {
 
   });
 
+  // TODO swagger
+  router.put('/associateLdap', loginRequiredStrictly, csrf, async(req, res) => {
+    const { passportService } = crowi;
+
+    if (!passportService.isLdapStrategySetup) {
+      logger.error('LdapStrategy has not been set up');
+      return res.apiv3Err('update-api-token-failed', 405);
+    }
+
+    return res.apiv3();
+  });
+
   return router;
 };