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

+ 2 - 16
src/client/js/components/Admin/Users/UserMenu.jsx

@@ -2,8 +2,6 @@ import React, { Fragment } from 'react';
 import PropTypes from 'prop-types';
 import PropTypes from 'prop-types';
 import { withTranslation } from 'react-i18next';
 import { withTranslation } from 'react-i18next';
 
 
-import { toastSuccess, toastError } from '../../../util/apiNotification';
-
 import StatusActivateForm from './StatusActivateForm';
 import StatusActivateForm from './StatusActivateForm';
 import StatusSuspendedForm from './StatusSuspendedForm';
 import StatusSuspendedForm from './StatusSuspendedForm';
 import RemoveUserButton from './UserRemoveButton';
 import RemoveUserButton from './UserRemoveButton';
@@ -29,19 +27,6 @@ class UserMenu extends React.Component {
     this.props.onPasswordResetClicked(this.props.user);
     this.props.onPasswordResetClicked(this.props.user);
   }
   }
 
 
-  async removeUser() {
-    const { appContainer, user } = this.props;
-
-    try {
-      const response = await appContainer.apiv3.delete(`/users/${user._id}/remove`);
-      const { username } = response.data.userData;
-      toastSuccess(`Delete ${username} success`);
-    }
-    catch (err) {
-      toastError(err);
-    }
-  }
-
   render() {
   render() {
     const { t, user } = this.props;
     const { t, user } = this.props;
 
 
@@ -63,7 +48,7 @@ class UserMenu extends React.Component {
             <li>
             <li>
               {(user.status === 1 || user.status === 3) && <StatusActivateForm user={user} />}
               {(user.status === 1 || user.status === 3) && <StatusActivateForm user={user} />}
               {user.status === 2 && <StatusSuspendedForm user={user} />}
               {user.status === 2 && <StatusSuspendedForm user={user} />}
-              {(user.status === 1 || user.status === 3 || user.status === 5) && <RemoveUserButton user={user} removeUser={() => { this.removeUser() }} />}
+              {(user.status === 1 || user.status === 3 || user.status === 5) && <RemoveUserButton user={user} removeUser={this.props.removeUser} />}
             </li>
             </li>
             <li className="divider pl-0"></li>
             <li className="divider pl-0"></li>
             <li className="dropdown-header">{ t('user_management.administrator_menu') }</li>
             <li className="dropdown-header">{ t('user_management.administrator_menu') }</li>
@@ -88,6 +73,7 @@ UserMenu.propTypes = {
   appContainer: PropTypes.instanceOf(AppContainer).isRequired,
   appContainer: PropTypes.instanceOf(AppContainer).isRequired,
 
 
   user: PropTypes.object.isRequired,
   user: PropTypes.object.isRequired,
+  removeUser: PropTypes.func.isRequired,
   onPasswordResetClicked: PropTypes.func.isRequired,
   onPasswordResetClicked: PropTypes.func.isRequired,
 };
 };
 
 

+ 2 - 2
src/client/js/components/Admin/Users/UserRemoveButton.jsx

@@ -14,14 +14,14 @@ class UserRemoveButton extends React.Component {
   }
   }
 
 
   onClickDeleteBtn() {
   onClickDeleteBtn() {
-    this.props.removeUser();
+    this.props.removeUser(this.props.user);
   }
   }
 
 
   render() {
   render() {
     const { t } = this.props;
     const { t } = this.props;
 
 
     return (
     return (
-      <a className="px-4" onClick={this.onClickDeleteBtn}>
+      <a className="px-4" onClick={() => { this.onClickDeleteBtn() }}>
         <i className="icon-fw icon-fire text-danger"></i> { t('Delete') }
         <i className="icon-fw icon-fire text-danger"></i> { t('Delete') }
       </a>
       </a>
     );
     );

+ 2 - 1
src/client/js/components/Admin/Users/UserTable.jsx

@@ -99,7 +99,7 @@ class UserTable extends React.Component {
                     { user.lastLoginAt && <span>{dateFnsFormat(new Date(user.lastLoginAt), 'yyyy-MM-dd HH:mm')}</span> }
                     { user.lastLoginAt && <span>{dateFnsFormat(new Date(user.lastLoginAt), 'yyyy-MM-dd HH:mm')}</span> }
                   </td>
                   </td>
                   <td>
                   <td>
-                    <UserMenu user={user} onPasswordResetClicked={this.props.onPasswordResetClicked} />
+                    <UserMenu user={user} onPasswordResetClicked={this.props.onPasswordResetClicked} removeUser={this.props.removeUser} />
                   </td>
                   </td>
                 </tr>
                 </tr>
               );
               );
@@ -121,6 +121,7 @@ UserTable.propTypes = {
   appContainer: PropTypes.instanceOf(AppContainer).isRequired,
   appContainer: PropTypes.instanceOf(AppContainer).isRequired,
 
 
   users: PropTypes.array.isRequired,
   users: PropTypes.array.isRequired,
+  removeUser: PropTypes.func.isRequired,
   onPasswordResetClicked: PropTypes.func.isRequired,
   onPasswordResetClicked: PropTypes.func.isRequired,
 };
 };
 
 

+ 18 - 0
src/client/js/components/Admin/Users/Users.jsx

@@ -2,6 +2,8 @@ import React, { Fragment } from 'react';
 import PropTypes from 'prop-types';
 import PropTypes from 'prop-types';
 import { withTranslation } from 'react-i18next';
 import { withTranslation } from 'react-i18next';
 
 
+import { toastSuccess, toastError } from '../../../util/apiNotification';
+
 import PasswordResetModal from './PasswordResetModal';
 import PasswordResetModal from './PasswordResetModal';
 import PaginationWrapper from '../../PaginationWrapper';
 import PaginationWrapper from '../../PaginationWrapper';
 import InviteUserControl from './InviteUserControl';
 import InviteUserControl from './InviteUserControl';
@@ -23,6 +25,7 @@ class UserPage extends React.Component {
       isPasswordResetModalShown: false,
       isPasswordResetModalShown: false,
     };
     };
 
 
+    this.removeUser = this.removeUser.bind(this);
     this.showPasswordResetModal = this.showPasswordResetModal.bind(this);
     this.showPasswordResetModal = this.showPasswordResetModal.bind(this);
     this.hidePasswordResetModal = this.hidePasswordResetModal.bind(this);
     this.hidePasswordResetModal = this.hidePasswordResetModal.bind(this);
   }
   }
@@ -37,6 +40,20 @@ class UserPage extends React.Component {
     });
     });
   }
   }
 
 
+  async removeUser(user) {
+
+    const { appContainer } = this.props;
+
+    try {
+      const response = await appContainer.apiv3.delete(`/users/${user._id}/remove`);
+      const { username } = response.data.userData;
+      toastSuccess(`Delete ${username} success`);
+    }
+    catch (err) {
+      toastError(err);
+    }
+  }
+
   /**
   /**
    * passwordリセットモーダルが開き、userが渡される
    * passwordリセットモーダルが開き、userが渡される
    * @param {object} user
    * @param {object} user
@@ -76,6 +93,7 @@ class UserPage extends React.Component {
         <UserTable
         <UserTable
           users={this.state.users}
           users={this.state.users}
           onPasswordResetClicked={this.showPasswordResetModal}
           onPasswordResetClicked={this.showPasswordResetModal}
+          removeUser={this.removeUser}
         />
         />
         <PaginationWrapper
         <PaginationWrapper
           activePage={this.state.activePage}
           activePage={this.state.activePage}