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

make external-account container

WESEEK Kaito 6 лет назад
Родитель
Сommit
76a91246b1

+ 2 - 2
src/client/js/app.jsx

@@ -57,7 +57,7 @@ import UserGroupDetailContainer from './services/UserGroupDetailContainer';
 import AdminUsersContainer from './services/AdminUsersContainer';
 import WebsocketContainer from './services/WebsocketContainer';
 import MarkDownSettingContainer from './services/MarkDownSettingContainer';
-import AdminExternalAccountsContainer from './services/AdminExternalAccountsContainer'
+import AdminExternalAccountsContainer from './services/AdminExternalAccountsContainer';
 
 const logger = loggerFactory('growi:app');
 
@@ -176,7 +176,7 @@ if (adminUsersElem != null) {
 }
 
 const adminExternalAccountsElem = document.getElementById('admin-external-account');
-if (adminExtenralAccountsElem != null) {
+if (adminExternalAccountsElem != null) {
   const adminExternalAccountsContainer = new AdminExternalAccountsContainer(appContainer);
   ReactDOM.render(
     <Provider inject={[injectableContainers, adminExternalAccountsContainer]}>

+ 16 - 4
src/client/js/services/AdminExteranlAccountsContainer.js → src/client/js/services/AdminExternalAccountsContainer.js

@@ -1,7 +1,7 @@
 import { Container } from 'unstated';
 
 import loggerFactory from '@alias/logger';
-import { isThisSecond } from 'date-fns/esm';
+
 
 // eslint-disable-next-line no-unused-vars
 const logger = loggerFactory('growi:services:UserGroupDetailContainer');
@@ -18,7 +18,7 @@ export default class AdminExternalAccountContainer extends Container {
     this.appContainer = appContainer;
 
     this.state = {
-        exteranalAccounts: JSON.parse(document.getElementById('admin-external-account-setting').getAttribute('external-account')) || [],
+      exteranalAccounts: JSON.parse(document.getElementById('admin-external-account-setting').getAttribute('external-account')) || [],
     };
 
   }
@@ -27,7 +27,19 @@ export default class AdminExternalAccountContainer extends Container {
    * Workaround for the mangling in production build to break constructor.name
    */
   static getClassName() {
-    return 'AdminExternalAccountContainer';
+    return 'AdminExternalAccountsContainer';
+  }
+
+  /**
+   * remove external account
+   *
+   * @memberOf AdminExternalAccountsContainer
+   * @param {string} externalAccountId id of the External Account to be removed
+   */
+  async removeExternal(externalAccountId) {
+    const res = await this.appContainer.apiv3.delete(`/users/external-accounts/${externalAccountId}/remove`);
+    const externalAccountData = res.data.exteranalAccount;
+    return externalAccountData;
   }
 
-}
+}

+ 9 - 8
src/server/routes/apiv3/external-account.js

@@ -6,8 +6,8 @@ const express = require('express');
 
 const router = express.Router();
 
-const { body } = require('express-validator/check');
-const { isEmail } = require('validator');
+const { param } = require('express-validator/check');
+
 
 const validator = {};
 
@@ -23,17 +23,18 @@ module.exports = (crowi) => {
   const adminRequired = require('../../middleware/admin-required')(crowi);
   const csrf = require('../../middleware/csrf')(crowi);
 
-  const { ErrorV3, ExternalAccount, } = crowi.models;
+  const { ErrorV3, ExternalAccount } = crowi.models;
 
   validator.delete = [
     param('id').trim().exists({ checkFalsy: true }),
   ];
+  const { ApiV3FormValidator } = crowi.middlewares;
 
-    /**
+  /**
    * @swagger
    *
    *  paths:
-   *    /_api/v3/user-groups/{id}:
+   *    /_api/v3/users/external-accounts/{id}/remove:
    *      delete:
    *        tags: [ExternalAccount]
    *        description: Delete ExternalAccount
@@ -51,11 +52,11 @@ module.exports = (crowi) => {
    *              application/json:
    *                schema:
    *                  properties:
-   *                    externalAccounts:
+   *                    externalAccount:
    *                      type: object
    *                      description: A result of `ExtenralAccount.findByIdAndRemove`
    */
-  router.delete('/:id.remove', loginRequiredStrictly, adminRequired, csrf, validator.delete, ApiV3FormValidator, async(req, res) => {
+  router.delete('/:id/remove', loginRequiredStrictly, adminRequired, csrf, validator.delete, ApiV3FormValidator, async(req, res) => {
     const { id: deleteExtenralAccountId } = req.params;
 
     try {
@@ -71,4 +72,4 @@ module.exports = (crowi) => {
   });
 
 
-}
+};