From 31f49cfcce9cae1f2c7a10c654ddd11b2bb6f958 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AC=A2=E4=B9=90=E9=A9=AC?= <38058090+SkywalkerSpace@users.noreply.github.com> Date: Mon, 22 Jul 2024 14:03:20 +0800 Subject: [PATCH 1/3] Ldap role list (#6386) * ldap role_list * USE_LDAP_ROLE_LIST_MAPPING --- seahub/base/accounts.py | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) 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() From bb346e75ee5bfa4e139972e48968d68c6243d223 Mon Sep 17 00:00:00 2001 From: lian Date: Tue, 23 Jul 2024 11:19:43 +0800 Subject: [PATCH 2/3] update .github/workflows/dist.yml --- .github/workflows/dist.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/dist.yml b/.github/workflows/dist.yml index c2b08f6824..6746f5fb48 100644 --- a/.github/workflows/dist.yml +++ b/.github/workflows/dist.yml @@ -3,8 +3,7 @@ name: Seahub Dist CI on: push: branches: - - master - - "10.0" + - "11.0" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 640edbfe680c14d9195bebf930a66a54fe2eff39 Mon Sep 17 00:00:00 2001 From: llj Date: Wed, 24 Jul 2024 14:59:26 +0800 Subject: [PATCH 3/3] ['folder permission' dialog] fixup: added 'catch' for seafile API requests; fixed prop type checking (#6410) --- ...-sub-folder-set-group-permission-dialog.js | 33 ++++++++++--------- ...b-sub-folder-set-user-permission-dialog.js | 29 ++++++++-------- 2 files changed, 31 insertions(+), 31 deletions(-) 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 6c4ac32b77..db45ee4e44 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 19c4d71fa0..ef2abf788e 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); }); };