mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-19 18:29:23 +00:00
Merge branch '11.0'
This commit is contained in:
@@ -7,6 +7,7 @@ import { Utils } from '../../utils/utils';
|
|||||||
import SharePermissionEditor from '../select-editor/share-permission-editor';
|
import SharePermissionEditor from '../select-editor/share-permission-editor';
|
||||||
import FileChooser from '../file-chooser/file-chooser';
|
import FileChooser from '../file-chooser/file-chooser';
|
||||||
import { SeahubSelect, NoGroupMessage } from '../common/select';
|
import { SeahubSelect, NoGroupMessage } from '../common/select';
|
||||||
|
import toaster from '../../components/toast';
|
||||||
|
|
||||||
class GroupItem extends React.Component {
|
class GroupItem extends React.Component {
|
||||||
|
|
||||||
@@ -78,7 +79,7 @@ GroupItem.propTypes = {
|
|||||||
item: PropTypes.object.isRequired,
|
item: PropTypes.object.isRequired,
|
||||||
permissions: PropTypes.array.isRequired,
|
permissions: PropTypes.array.isRequired,
|
||||||
showPath: PropTypes.bool.isRequired,
|
showPath: PropTypes.bool.isRequired,
|
||||||
repoName: PropTypes.string.isRequired,
|
repoName: PropTypes.string,
|
||||||
deleteGroupPermissionItem: PropTypes.func.isRequired,
|
deleteGroupPermissionItem: PropTypes.func.isRequired,
|
||||||
onChangeGroupPermission: PropTypes.func.isRequired,
|
onChangeGroupPermission: PropTypes.func.isRequired,
|
||||||
};
|
};
|
||||||
@@ -128,6 +129,9 @@ class LibSubFolderSetGroupPermissionDialog extends React.Component {
|
|||||||
value: item.name
|
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
|
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];
|
errorMsg[i] = res.data.failed[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setState({
|
this.setState({
|
||||||
errorMsg: errorMsg,
|
errorMsg: errorMsg,
|
||||||
groupPermissionItems: this.state.groupPermissionItems.concat(res.data.success),
|
groupPermissionItems: this.state.groupPermissionItems.concat(res.data.success),
|
||||||
@@ -174,20 +180,9 @@ class LibSubFolderSetGroupPermissionDialog extends React.Component {
|
|||||||
permission: 'rw',
|
permission: 'rw',
|
||||||
folderPath: ''
|
folderPath: ''
|
||||||
});
|
});
|
||||||
}).catch((error) => {
|
}).catch(error => {
|
||||||
let errorMsg = '';
|
let errMessage = Utils.getErrorMsg(error);
|
||||||
if (error.response) {
|
toaster.danger(errMessage);
|
||||||
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]
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -199,6 +194,9 @@ class LibSubFolderSetGroupPermissionDialog extends React.Component {
|
|||||||
this.setState({
|
this.setState({
|
||||||
groupPermissionItems: this.state.groupPermissionItems.filter(deletedItem => { return deletedItem != item; })
|
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);
|
seafileAPI.updateGroupFolderPerm(item.repo_id, permission, item.folder_path, item.group_id);
|
||||||
request.then(() => {
|
request.then(() => {
|
||||||
this.updateGroupPermission(item, permission);
|
this.updateGroupPermission(item, permission);
|
||||||
|
}).catch(error => {
|
||||||
|
let errMessage = Utils.getErrorMsg(error);
|
||||||
|
toaster.danger(errMessage);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -7,6 +7,7 @@ import { Utils } from '../../utils/utils';
|
|||||||
import UserSelect from '../user-select';
|
import UserSelect from '../user-select';
|
||||||
import SharePermissionEditor from '../select-editor/share-permission-editor';
|
import SharePermissionEditor from '../select-editor/share-permission-editor';
|
||||||
import FileChooser from '../file-chooser/file-chooser';
|
import FileChooser from '../file-chooser/file-chooser';
|
||||||
|
import toaster from '../../components/toast';
|
||||||
|
|
||||||
class UserItem extends React.Component {
|
class UserItem extends React.Component {
|
||||||
|
|
||||||
@@ -81,7 +82,7 @@ UserItem.propTypes = {
|
|||||||
deleteUserFolderPermission: PropTypes.func.isRequired,
|
deleteUserFolderPermission: PropTypes.func.isRequired,
|
||||||
onChangeUserFolderPerm: PropTypes.func.isRequired,
|
onChangeUserFolderPerm: PropTypes.func.isRequired,
|
||||||
showPath: PropTypes.bool.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) {
|
if (res.data.length !== 0) {
|
||||||
this.setState({ userFolderPermItems: res.data });
|
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: '',
|
folderPath: '',
|
||||||
});
|
});
|
||||||
this.refs.userSelect.clearSelect();
|
this.refs.userSelect.clearSelect();
|
||||||
}).catch((error) => {
|
}).catch(error => {
|
||||||
let errorMsg = '';
|
let errMessage = Utils.getErrorMsg(error);
|
||||||
if (error.response) {
|
toaster.danger(errMessage);
|
||||||
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]
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -186,6 +179,9 @@ class LibSubFolderSetUserPermissionDialog extends React.Component {
|
|||||||
return deletedItem != item;
|
return deletedItem != item;
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
}).catch(error => {
|
||||||
|
let errMessage = Utils.getErrorMsg(error);
|
||||||
|
toaster.danger(errMessage);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -201,6 +197,9 @@ class LibSubFolderSetUserPermissionDialog extends React.Component {
|
|||||||
return item;
|
return item;
|
||||||
});
|
});
|
||||||
this.setState({ userFolderPermItems: userFolderPermItems });
|
this.setState({ userFolderPermItems: userFolderPermItems });
|
||||||
|
}).catch(error => {
|
||||||
|
let errMessage = Utils.getErrorMsg(error);
|
||||||
|
toaster.danger(errMessage);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -91,18 +91,28 @@ UNUSABLE_PASSWORD = '!' # This will never be a valid hash
|
|||||||
def default_ldap_role_mapping(role):
|
def default_ldap_role_mapping(role):
|
||||||
return 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_mapping = default_ldap_role_mapping
|
||||||
|
ldap_role_list_mapping = default_ldap_role_list_mapping
|
||||||
|
USE_LDAP_ROLE_LIST_MAPPING = False
|
||||||
|
|
||||||
if ENABLE_LDAP:
|
if ENABLE_LDAP:
|
||||||
try:
|
|
||||||
current_path = os.path.dirname(os.path.abspath(__file__))
|
current_path = os.path.dirname(os.path.abspath(__file__))
|
||||||
conf_dir = os.path.join(current_path, '../../../../conf')
|
conf_dir = os.path.join(current_path, '../../../../conf')
|
||||||
sys.path.append(conf_dir)
|
sys.path.append(conf_dir)
|
||||||
|
try:
|
||||||
from seahub_custom_functions import ldap_role_mapping
|
from seahub_custom_functions import ldap_role_mapping
|
||||||
ldap_role_mapping = ldap_role_mapping
|
ldap_role_mapping = ldap_role_mapping
|
||||||
except:
|
except:
|
||||||
pass
|
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):
|
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()
|
contact_email = contact_email_list[0].decode()
|
||||||
|
|
||||||
if user_role_list:
|
if user_role_list:
|
||||||
user_role = user_role_list[0].decode()
|
if not USE_LDAP_ROLE_LIST_MAPPING:
|
||||||
user_role = ldap_role_mapping(user_role)
|
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:
|
if authc_id_list:
|
||||||
authc_id = authc_id_list[0].decode()
|
authc_id = authc_id_list[0].decode()
|
||||||
|
Reference in New Issue
Block a user