diff --git a/frontend/src/components/dialog/lib-sub-folder-set-group-permission-dialog.js b/frontend/src/components/dialog/lib-sub-folder-set-group-permission-dialog.js index 401470335b..c8d95ad8f6 100644 --- a/frontend/src/components/dialog/lib-sub-folder-set-group-permission-dialog.js +++ b/frontend/src/components/dialog/lib-sub-folder-set-group-permission-dialog.js @@ -7,6 +7,7 @@ import { Utils } from '../../utils/utils'; import SharePermissionEditor from '../select-editor/share-permission-editor'; import FileChooser from '../file-chooser/file-chooser'; import { SeahubSelect, NoGroupMessage } from '../common/select'; +import toaster from '../../components/toast'; class GroupItem extends React.Component { @@ -78,7 +79,7 @@ GroupItem.propTypes = { item: PropTypes.object.isRequired, permissions: PropTypes.array.isRequired, showPath: PropTypes.bool.isRequired, - repoName: PropTypes.string.isRequired, + repoName: PropTypes.string, deleteGroupPermissionItem: PropTypes.func.isRequired, onChangeGroupPermission: PropTypes.func.isRequired, }; @@ -128,6 +129,9 @@ class LibSubFolderSetGroupPermissionDialog extends React.Component { value: item.name }; }); + }).catch(error => { + let errMessage = Utils.getErrorMsg(error); + toaster.danger(errMessage); }); }; @@ -142,6 +146,9 @@ class LibSubFolderSetGroupPermissionDialog extends React.Component { groupPermissionItems: res.data }); } + }).catch(error => { + let errMessage = Utils.getErrorMsg(error); + toaster.danger(errMessage); }); }; @@ -166,7 +173,6 @@ class LibSubFolderSetGroupPermissionDialog extends React.Component { errorMsg[i] = res.data.failed[i]; } } - this.setState({ errorMsg: errorMsg, groupPermissionItems: this.state.groupPermissionItems.concat(res.data.success), @@ -174,20 +180,9 @@ class LibSubFolderSetGroupPermissionDialog extends React.Component { permission: 'rw', folderPath: '' }); - }).catch((error) => { - let errorMsg = ''; - if (error.response) { - if (error.response.data && error.response.data['error_msg']) { - errorMsg = error.response.data['error_msg']; - } else { - errorMsg = gettext('Error'); - } - } else { - errorMsg = gettext('Please check the network.'); - } - this.setState({ - errorMsg: [errorMsg] - }); + }).catch(error => { + let errMessage = Utils.getErrorMsg(error); + toaster.danger(errMessage); }); }; @@ -199,6 +194,9 @@ class LibSubFolderSetGroupPermissionDialog extends React.Component { this.setState({ groupPermissionItems: this.state.groupPermissionItems.filter(deletedItem => { return deletedItem != item; }) }); + }).catch(error => { + let errMessage = Utils.getErrorMsg(error); + toaster.danger(errMessage); }); }; @@ -208,6 +206,9 @@ class LibSubFolderSetGroupPermissionDialog extends React.Component { seafileAPI.updateGroupFolderPerm(item.repo_id, permission, item.folder_path, item.group_id); request.then(() => { this.updateGroupPermission(item, permission); + }).catch(error => { + let errMessage = Utils.getErrorMsg(error); + toaster.danger(errMessage); }); }; diff --git a/frontend/src/components/dialog/lib-sub-folder-set-user-permission-dialog.js b/frontend/src/components/dialog/lib-sub-folder-set-user-permission-dialog.js index e26c49ae6b..b99de046ea 100644 --- a/frontend/src/components/dialog/lib-sub-folder-set-user-permission-dialog.js +++ b/frontend/src/components/dialog/lib-sub-folder-set-user-permission-dialog.js @@ -7,6 +7,7 @@ import { Utils } from '../../utils/utils'; import UserSelect from '../user-select'; import SharePermissionEditor from '../select-editor/share-permission-editor'; import FileChooser from '../file-chooser/file-chooser'; +import toaster from '../../components/toast'; class UserItem extends React.Component { @@ -81,7 +82,7 @@ UserItem.propTypes = { deleteUserFolderPermission: PropTypes.func.isRequired, onChangeUserFolderPerm: PropTypes.func.isRequired, showPath: PropTypes.bool.isRequired, - repoName: PropTypes.string.isRequired, + repoName: PropTypes.string, }; @@ -125,6 +126,9 @@ class LibSubFolderSetUserPermissionDialog extends React.Component { if (res.data.length !== 0) { this.setState({ userFolderPermItems: res.data }); } + }).catch(error => { + let errMessage = Utils.getErrorMsg(error); + toaster.danger(errMessage); }); } @@ -159,20 +163,9 @@ class LibSubFolderSetUserPermissionDialog extends React.Component { folderPath: '', }); this.refs.userSelect.clearSelect(); - }).catch((error) => { - let errorMsg = ''; - if (error.response) { - if (error.response.data && error.response.data['error_msg']) { - errorMsg = error.response.data['error_msg']; - } else { - errorMsg = gettext('Error'); - } - } else { - errorMsg = gettext('Please check the network.'); - } - this.setState({ - errorMsg: [errorMsg] - }); + }).catch(error => { + let errMessage = Utils.getErrorMsg(error); + toaster.danger(errMessage); }); }; @@ -186,6 +179,9 @@ class LibSubFolderSetUserPermissionDialog extends React.Component { return deletedItem != item; }) }); + }).catch(error => { + let errMessage = Utils.getErrorMsg(error); + toaster.danger(errMessage); }); }; @@ -201,6 +197,9 @@ class LibSubFolderSetUserPermissionDialog extends React.Component { return item; }); this.setState({ userFolderPermItems: userFolderPermItems }); + }).catch(error => { + let errMessage = Utils.getErrorMsg(error); + toaster.danger(errMessage); }); }; diff --git a/seahub/base/accounts.py b/seahub/base/accounts.py index 04239fdc71..5f7ca21914 100644 --- a/seahub/base/accounts.py +++ b/seahub/base/accounts.py @@ -91,18 +91,28 @@ UNUSABLE_PASSWORD = '!' # This will never be a valid hash def default_ldap_role_mapping(role): return role +def default_ldap_role_list_mapping(role_list): + return role_list[0] if role_list else '' ldap_role_mapping = default_ldap_role_mapping +ldap_role_list_mapping = default_ldap_role_list_mapping +USE_LDAP_ROLE_LIST_MAPPING = False + if ENABLE_LDAP: + current_path = os.path.dirname(os.path.abspath(__file__)) + conf_dir = os.path.join(current_path, '../../../../conf') + sys.path.append(conf_dir) try: - current_path = os.path.dirname(os.path.abspath(__file__)) - conf_dir = os.path.join(current_path, '../../../../conf') - sys.path.append(conf_dir) from seahub_custom_functions import ldap_role_mapping ldap_role_mapping = ldap_role_mapping except: pass - + try: + from seahub_custom_functions import ldap_role_list_mapping + ldap_role_list_mapping = ldap_role_list_mapping + USE_LDAP_ROLE_LIST_MAPPING = True + except: + pass class UserManager(object): @@ -860,8 +870,12 @@ def parse_ldap_res(ldap_search_result, enable_sasl, sasl_mechanism, sasl_authc_i contact_email = contact_email_list[0].decode() if user_role_list: - user_role = user_role_list[0].decode() - user_role = ldap_role_mapping(user_role) + if not USE_LDAP_ROLE_LIST_MAPPING: + role = user_role_list[0].decode() + user_role = ldap_role_mapping(role) + else: + role_list = [role.decode() for role in user_role_list] + user_role = ldap_role_list_mapping(role_list) if authc_id_list: authc_id = authc_id_list[0].decode()