| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- import { Container } from 'unstated';
- import loggerFactory from '@alias/logger';
- // eslint-disable-next-line no-unused-vars
- const logger = loggerFactory('growi:services:UserGroupDetailContainer');
- /**
- * Service container for admin users page (Users.jsx)
- * @extends {Container} unstated Container
- */
- export default class AdminUsersContainer extends Container {
- constructor(appContainer) {
- super();
- this.appContainer = appContainer;
- this.state = {
- users: [],
- isPasswordResetModalShown: false,
- isUserInviteModalShown: false,
- userForPasswordResetModal: null,
- totalUsers: 0,
- activePage: 1,
- pagingLimit: Infinity,
- };
- this.showPasswordResetModal = this.showPasswordResetModal.bind(this);
- this.hidePasswordResetModal = this.hidePasswordResetModal.bind(this);
- this.toggleUserInviteModal = this.toggleUserInviteModal.bind(this);
- }
- /**
- * Workaround for the mangling in production build to break constructor.name
- */
- static getClassName() {
- return 'AdminUsersContainer';
- }
- /**
- * syncUsers of selectedPage
- * @memberOf AdminUsersContainer
- * @param {number} selectedPage
- */
- async retrieveUsersByPagingNum(selectedPage) {
- const params = { page: selectedPage };
- const { data } = await this.appContainer.apiv3.get('/users', params);
- if (data.paginateResult == null) {
- throw new Error('data must conclude \'paginateResult\' property.');
- }
- const { docs: users, totalDocs: totalUsers, limit: pagingLimit } = data.paginateResult;
- this.setState({
- users,
- totalUsers,
- pagingLimit,
- activePage: selectedPage,
- });
- }
- /**
- * create user invited
- * @memberOf AdminUsersContainer
- * @param {object} shapedEmailList
- * @param {bool} sendEmail
- */
- async createUserInvited(shapedEmailList, sendEmail) {
- const response = await this.appContainer.apiv3.post('/users/invite', {
- shapedEmailList,
- sendEmail,
- });
- await this.retrieveUsersByPagingNum(this.state.activePage);
- const { invitedUserList } = response.data;
- return invitedUserList;
- }
- /**
- * open reset password modal, and props user
- * @memberOf AdminUsersContainer
- * @param {object} user
- */
- async showPasswordResetModal(user) {
- await this.setState({
- isPasswordResetModalShown: true,
- userForPasswordResetModal: user,
- });
- }
- /**
- * close reset password modal
- * @memberOf AdminUsersContainer
- */
- async hidePasswordResetModal() {
- await this.setState({ isPasswordResetModalShown: false });
- }
- /**
- * toggle user invite modal
- * @memberOf AdminUsersContainer
- */
- async toggleUserInviteModal() {
- await this.setState({ isUserInviteModalShown: !this.state.isUserInviteModalShown });
- }
- /**
- * Give user admin
- * @memberOf AdminUsersContainer
- * @param {string} userId
- * @return {string} username
- */
- async giveUserAdmin(userId) {
- const response = await this.appContainer.apiv3.put(`/users/${userId}/giveAdmin`);
- const { username } = response.data.userData;
- await this.retrieveUsersByPagingNum(this.state.activePage);
- return username;
- }
- /**
- * Remove user admin
- * @memberOf AdminUsersContainer
- * @param {string} userId
- * @return {string} username
- */
- async removeUserAdmin(userId) {
- const response = await this.appContainer.apiv3.put(`/users/${userId}/removeAdmin`);
- const { username } = response.data.userData;
- await this.retrieveUsersByPagingNum(this.state.activePage);
- return username;
- }
- /**
- * Activate user
- * @memberOf AdminUsersContainer
- * @param {string} userId
- * @return {string} username
- */
- async activateUser(userId) {
- const response = await this.appContainer.apiv3.put(`/users/${userId}/activate`);
- const { username } = response.data.userData;
- await this.retrieveUsersByPagingNum(this.state.activePage);
- return username;
- }
- /**
- * Deactivate user
- * @memberOf AdminUsersContainer
- * @param {string} userId
- * @return {string} username
- */
- async deactivateUser(userId) {
- const response = await this.appContainer.apiv3.put(`/users/${userId}/deactivate`);
- const { username } = response.data.userData;
- await this.retrieveUsersByPagingNum(this.state.activePage);
- return username;
- }
- /**
- * remove user
- * @memberOf AdminUsersContainer
- * @param {string} userId
- * @return {string} userData
- */
- async removeUser(userId) {
- const response = await this.appContainer.apiv3.delete(`/users/${userId}/remove`);
- const removedUserData = response.data.userData;
- await this.retrieveUsersByPagingNum(this.state.activePage);
- return removedUserData;
- }
- }
|