Browse Source

Merge commit 'd6e76af67c766ead989e677bad5a55403909c778' into feat/show-suggestions-for-joining-user-group

itizawa 6 năm trước cách đây
mục cha
commit
a3ab44fa46

+ 3 - 2
src/client/js/components/Admin/UserGroupDetail/UserGroupUserFormByInput.jsx

@@ -16,6 +16,7 @@ class UserGroupUserFormByInput extends React.Component {
     super(props);
 
     this.state = {
+      keyword: '',
       inputUser: '',
       applicableUsers: [],
       isLoading: false,
@@ -54,7 +55,7 @@ class UserGroupUserFormByInput extends React.Component {
 
   async searhApplicableUsers() {
     try {
-      const users = await this.props.userGroupDetailContainer.fetchApplicableUsers(this.state.inputUser);
+      const users = await this.props.userGroupDetailContainer.fetchApplicableUsers(this.state.keyword);
       this.setState({ applicableUsers: users, isLoading: false });
     }
     catch (err) {
@@ -76,7 +77,7 @@ class UserGroupUserFormByInput extends React.Component {
       return;
     }
 
-    this.setState({ isLoading: true });
+    this.setState({ keyword, isLoading: true });
     this.searhApplicableUsersDebounce();
   }
 

+ 1 - 1
src/client/js/services/UserGroupDetailContainer.js

@@ -132,7 +132,7 @@ export default class UserGroupDetailContainer extends Container {
   async fetchApplicableUsers(searchWord) {
     const res = await this.appContainer.apiv3.get(`/user-groups/${this.state.userGroup._id}/unrelated-users`, {
       searchWord,
-      isForwardMatch: this.state.searchType,
+      searchType: this.state.searchType,
       isAlsoMailSearched: this.state.isAlsoMailSearched,
       isAlsoNameSearched: this.state.isAlsoNameSearched,
     });

+ 6 - 6
src/server/models/user-group-relation.js

@@ -196,20 +196,20 @@ class UserGroupRelation {
    */
   static findUserByNotRelatedGroup(userGroup, queryOptions) {
     const User = UserGroupRelation.crowi.model('User');
-    let searchWord = `${queryOptions.searchWord}`;
+    let searchWord = new RegExp(`${queryOptions.searchWord}`);
     switch (queryOptions.searchType) {
       case 'forward':
-        searchWord = `^${queryOptions.searchWord}`;
+        searchWord = new RegExp(`^${queryOptions.searchWord}`);
         break;
       case 'backword':
-        searchWord = `${queryOptions.searchWord}$`;
+        searchWord = new RegExp(`${queryOptions.searchWord}$`);
         break;
     }
     const searthField = [
-      { username: new RegExp(`${queryOptions.searchWord}`) },
+      { username: searchWord },
     ];
-    if (queryOptions.isAlsoMailSearched) { searthField.push({ email: new RegExp(`${searchWord}`) }) }
-    if (queryOptions.isAlsoNameSearched) { searthField.push({ name: new RegExp(`${searchWord}`) }) }
+    if (queryOptions.isAlsoMailSearched === 'true') { searthField.push({ email: searchWord }) }
+    if (queryOptions.isAlsoNameSearched === 'true') { searthField.push({ name: searchWord }) }
 
     return this.findAllRelationForUserGroup(userGroup)
       .then((relations) => {

+ 2 - 2
src/server/routes/apiv3/user-group.js

@@ -322,11 +322,11 @@ module.exports = (crowi) => {
   router.get('/:id/unrelated-users', loginRequiredStrictly, adminRequired, async(req, res) => {
     const { id } = req.params;
     const {
-      searchWord, isForwardMatch, isAlsoNameSearched, isAlsoMailSearched,
+      searchWord, searchType, isAlsoNameSearched, isAlsoMailSearched,
     } = req.query;
 
     const queryOptions = {
-      searchWord, isForwardMatch, isAlsoNameSearched, isAlsoMailSearched,
+      searchWord, searchType, isAlsoNameSearched, isAlsoMailSearched,
     };
 
     try {