AdminUsersContainer.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  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. * create user invited
  52. * @memberOf AdminUsersContainer
  53. * @param {object} shapedEmailList
  54. * @param {bool} sendEmail
  55. */
  56. async createUserInvited(shapedEmailList, sendEmail) {
  57. const response = await this.appContainer.apiv3.post('/users/invite', {
  58. shapedEmailList,
  59. sendEmail,
  60. });
  61. const { emailList } = response.data;
  62. return emailList;
  63. }
  64. /**
  65. * open reset password modal, and props user
  66. * @memberOf AdminUsersContainer
  67. * @param {object} user
  68. */
  69. async showPasswordResetModal(user) {
  70. await this.setState({
  71. isPasswordResetModalShown: true,
  72. userForPasswordResetModal: user,
  73. });
  74. }
  75. /**
  76. * close reset password modal
  77. * @memberOf AdminUsersContainer
  78. */
  79. async hidePasswordResetModal() {
  80. await this.setState({ isPasswordResetModalShown: false });
  81. }
  82. /**
  83. * toggle user invite modal
  84. * @memberOf AdminUsersContainer
  85. */
  86. async toggleUserInviteModal() {
  87. await this.setState({ isUserInviteModalShown: !this.state.isUserInviteModalShown });
  88. }
  89. /**
  90. * Give user admin
  91. * @memberOf AdminUsersContainer
  92. * @param {string} userId
  93. * @return {string} username
  94. */
  95. async giveUserAdmin(userId) {
  96. const response = await this.appContainer.apiv3.put(`/users/${userId}/giveAdmin`);
  97. const { username } = response.data.userData;
  98. return username;
  99. }
  100. /**
  101. * Remove user admin
  102. * @memberOf AdminUsersContainer
  103. * @param {string} userId
  104. * @return {string} username
  105. */
  106. async removeUserAdmin(userId) {
  107. const response = await this.appContainer.apiv3.put(`/users/${userId}/removeAdmin`);
  108. const { username } = response.data.userData;
  109. return username;
  110. }
  111. /**
  112. * Activate user
  113. * @memberOf AdminUsersContainer
  114. * @param {string} userId
  115. * @return {string} username
  116. */
  117. async activateUser(userId) {
  118. const response = await this.appContainer.apiv3.put(`/users/${userId}/activate`);
  119. const { username } = response.data.userData;
  120. return username;
  121. }
  122. /**
  123. * Deactivate user
  124. * @memberOf AdminUsersContainer
  125. * @param {string} userId
  126. * @return {string} username
  127. */
  128. async deactivateUser(userId) {
  129. const response = await this.appContainer.apiv3.put(`/users/${userId}/deactivate`);
  130. const { username } = response.data.userData;
  131. return username;
  132. }
  133. /**
  134. * remove user
  135. * @memberOf AdminUsersContainer
  136. * @param {string} userId
  137. * @return {string} username
  138. */
  139. async removeUser(userId) {
  140. const response = await this.appContainer.apiv3.delete(`/users/${userId}/remove`);
  141. const { username } = response.data.userData;
  142. return username;
  143. }
  144. }