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

+ 3 - 4
src/client/js/services/AdminTwitterSecurityContainer.js

@@ -4,6 +4,7 @@ import loggerFactory from '@alias/logger';
 import { pathUtils } from 'growi-commons';
 
 import urljoin from 'url-join';
+import removeNullPropertyFromObject from '../../../lib/util/removeNullPropertyFromObject';
 
 // eslint-disable-next-line no-unused-vars
 const logger = loggerFactory('growi:security:AdminTwitterSecurityContainer');
@@ -76,15 +77,13 @@ export default class AdminTwitterSecurityContainer extends Container {
   async updateTwitterSetting() {
     const { twitterConsumerKey, twitterConsumerSecret, isSameUsernameTreatedAsIdenticalUser } = this.state;
 
-    const requestParams = {
+    let requestParams = {
       twitterConsumerKey,
       twitterConsumerSecret,
       isSameUsernameTreatedAsIdenticalUser,
     };
 
-    for (const [key, value] of Object.entries(requestParams)) {
-      if (value == null) { delete requestParams[key] }
-    }
+    requestParams = removeNullPropertyFromObject(requestParams);
 
     const response = await this.appContainer.apiv3.put('/security-setting/twitter-oauth', requestParams);
 

+ 12 - 0
src/lib/util/removeNullPropertyFromObject.js

@@ -0,0 +1,12 @@
+// remove property if value is null
+
+const removeNullPropertyFromObject = (object) => {
+
+  for (const [key, value] of Object.entries(object)) {
+    if (value == null) { delete object[key] }
+  }
+
+  return object;
+};
+
+module.exports = removeNullPropertyFromObject;

+ 3 - 4
src/server/routes/apiv3/security-setting.js

@@ -11,6 +11,7 @@ const router = express.Router();
 
 const { body } = require('express-validator/check');
 const ErrorV3 = require('../../models/vo/error-apiv3');
+const removeNullPropertyFromObject = require('../../../lib/util/removeNullPropertyFromObject');
 
 const validator = {
   generalSetting: [
@@ -889,15 +890,13 @@ module.exports = (crowi) => {
    */
   router.put('/twitter-oauth', loginRequiredStrictly, adminRequired, csrf, validator.twitterOAuth, ApiV3FormValidator, async(req, res) => {
 
-    const requestParams = {
+    let requestParams = {
       'security:passport-twitter:consumerKey': req.body.twitterConsumerKey,
       'security:passport-twitter:consumerSecret': req.body.twitterConsumerSecret,
       'security:passport-twitter:isSameUsernameTreatedAsIdenticalUser': req.body.isSameUsernameTreatedAsIdenticalUser,
     };
 
-    for (const [key, value] of Object.entries(requestParams)) {
-      if (req.body[value] != null) { delete requestParams[key] }
-    }
+    requestParams = removeNullPropertyFromObject(requestParams);
 
     try {
       await crowi.configManager.updateConfigsInTheSameNamespace('crowi', requestParams);