AdminUsersContainer.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. import { Container } from 'unstated';
  2. import loggerFactory from '@alias/logger';
  3. // eslint-disable-next-line no-unused-vars
  4. const logger = loggerFactory('growi:services:UserGroupDetailContainer');
  5. /**
  6. * Service container for admin users page (Users.jsx)
  7. * @extends {Container} unstated Container
  8. */
  9. export default class AdminUsersContainer extends Container {
  10. constructor(appContainer) {
  11. super();
  12. this.appContainer = appContainer;
  13. this.state = {
  14. users: JSON.parse(document.getElementById('admin-user-page').getAttribute('users')) || [],
  15. isPasswordResetModalShown: false,
  16. isUserInviteModalShown: false,
  17. userForPasswordResetModal: null,
  18. totalUsers: 0,
  19. activePage: 1,
  20. pagingLimit: Infinity,
  21. };
  22. this.showPasswordResetModal = this.showPasswordResetModal.bind(this);
  23. this.hidePasswordResetModal = this.hidePasswordResetModal.bind(this);
  24. this.toggleUserInviteModal = this.toggleUserInviteModal.bind(this);
  25. }
  26. /**
  27. * Workaround for the mangling in production build to break constructor.name
  28. */
  29. static getClassName() {
  30. return 'AdminUsersContainer';
  31. }
  32. /**
  33. * syncUsers of selectedPage
  34. * @memberOf AdminUsersContainer
  35. * @param {number} selectedPage
  36. */
  37. async retrieveUsersByPagingNum(selectedPage) {
  38. const params = { page: selectedPage };
  39. const response = await this.appContainer.apiv3.get('/users', params);
  40. const users = response.data.users;
  41. const totalUsers = response.data.totalUsers;
  42. const pagingLimit = response.data.pagingLimit;
  43. this.setState({
  44. users,
  45. totalUsers,
  46. pagingLimit,
  47. activePage: selectedPage,
  48. });
  49. }
  50. /**
  51. * open reset password modal, and props user
  52. * @memberOf AdminUsersContainer
  53. * @param {object} user
  54. */
  55. async showPasswordResetModal(user) {
  56. await this.setState({
  57. isPasswordResetModalShown: true,
  58. userForPasswordResetModal: user,
  59. });
  60. }
  61. /**
  62. * close reset password modal
  63. * @memberOf AdminUsersContainer
  64. */
  65. async hidePasswordResetModal() {
  66. await this.setState({ isPasswordResetModalShown: false });
  67. }
  68. /**
  69. * toggle user invite modal
  70. * @memberOf AdminUsersContainer
  71. */
  72. async toggleUserInviteModal() {
  73. await this.setState({ isUserInviteModalShown: !this.state.isUserInviteModalShown });
  74. }
  75. /**
  76. * Activate user
  77. * @memberOf AdminUsersContainer
  78. * @param {string} userId
  79. * @return {string} username
  80. */
  81. async activateUser(userId) {
  82. // const response = await this.appContainer.apiv3.delete(`/users/${userId}/remove`);
  83. // const { username } = response.data.userData;
  84. const username = 'gest';
  85. return username;
  86. }
  87. /**
  88. * remove user
  89. * @memberOf AdminUsersContainer
  90. * @param {string} userId
  91. * @return {string} username
  92. */
  93. async removeUser(userId) {
  94. const response = await this.appContainer.apiv3.delete(`/users/${userId}/remove`);
  95. const { username } = response.data.userData;
  96. return username;
  97. }
  98. }