1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-10-23 04:01:25 +00:00
Files
seahub/frontend/src/pages/org-admin/web-settings/web-settings.js

219 lines
8.4 KiB
JavaScript
Raw Normal View History

2023-03-07 18:11:33 +08:00
import React, { Component, Fragment } from 'react';
import { Utils } from '../../../utils/utils';
import { orgAdminAPI } from '../../../utils/org-admin-api';
import { gettext, mediaUrl, logoPath, orgID, orgEnableAdminCustomLogo, orgEnableAdminCustomName, enableMultiADFS } from '../../../utils/constants';
2023-03-07 18:11:33 +08:00
import Loading from '../../../components/loading';
import toaster from '../../../components/toast';
import MainPanelTopbar from '../main-panel-topbar';
import Section from './section';
import InputItem from './input-item';
import FileItem from './file-item';
import { InputGroupText } from 'reactstrap';
2023-03-07 18:11:33 +08:00
import '../../../css/system-admin-web-settings.css';
import CheckboxItem from '../../sys-admin/web-settings/checkbox-item';
2023-03-07 18:11:33 +08:00
const { sysEnableUserCleanTrash, sysEnableEncryptedLibrary } = window.org.pageOptions;
2023-03-11 13:07:00 +08:00
class OrgWebSettings extends Component {
2023-03-07 18:11:33 +08:00
constructor(props) {
super(props);
this.state = {
loading: true,
errorMsg: '',
config_dict: null,
logoPath: logoPath,
file_ext_white_list: '',
force_adfs_login: false,
disable_org_encrypted_library: false,
disable_org_user_clean_trash: false,
user_default_quota: 0
2023-03-07 18:11:33 +08:00
};
}
2024-07-18 11:58:42 +08:00
componentDidMount() {
orgAdminAPI.orgAdminGetOrgInfo().then((res) => {
const { user_default_quota } = res.data;
let user_default_quota_displayed;
if (user_default_quota == -1 || // not set
user_default_quota == 0 || // default
user_default_quota < 0) { // a value less than 0, set by users
user_default_quota_displayed = 0;
} else {
const i = parseInt(Math.floor(Math.log(user_default_quota) / Math.log(1000)), 10);
user_default_quota_displayed = (user_default_quota / (1000 ** i));
}
2023-03-07 18:11:33 +08:00
this.setState({
loading: false,
2023-03-11 13:07:00 +08:00
config_dict: res.data,
file_ext_white_list: res.data.file_ext_white_list,
force_adfs_login: res.data.force_adfs_login,
disable_org_encrypted_library: res.data.disable_org_encrypted_library,
disable_org_user_clean_trash: res.data.disable_org_user_clean_trash,
user_default_quota: user_default_quota_displayed
2023-03-07 18:11:33 +08:00
});
}).catch((error) => {
this.setState({
loading: false,
errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403
});
});
}
2024-07-18 11:58:42 +08:00
updateName = (key, newOrgName) => {
orgAdminAPI.orgAdminUpdateName(orgID, newOrgName).then((res) => {
this.setState({
config_dict: res.data
});
toaster.success(gettext('Name updated'));
}).catch((error) => {
let errMessage = Utils.getErrorMsg(error);
toaster.danger(errMessage);
});
};
2023-03-07 18:11:33 +08:00
updateLogo = (file) => {
orgAdminAPI.orgAdminUpdateLogo(orgID, file).then((res) => {
2023-03-07 18:11:33 +08:00
this.setState({
logoPath: res.data.logo_path
2023-03-07 18:11:33 +08:00
});
toaster.success(gettext('Logo updated'));
2023-03-07 18:11:33 +08:00
}).catch((error) => {
let errMessage = Utils.getErrorMsg(error);
toaster.danger(errMessage);
});
};
2023-03-07 18:11:33 +08:00
orgSaveSetting = (key, value) => {
orgAdminAPI.orgAdminSetSysSettingInfo(orgID, key, value).then((res) => {
toaster.success(gettext('Setting updated'));
2023-03-11 13:07:00 +08:00
}).catch((error) => {
let errMessage = Utils.getErrorMsg(error);
toaster.danger(errMessage);
});
};
2023-03-11 13:07:00 +08:00
orgUpdateUserDefaultQuota = (key, quota) => {
orgAdminAPI.orgAdminSetOrgUserDefaultQuota(orgID, parseInt(quota)).then((res) => {
toaster.success(gettext('User default quota updated'));
}).catch((error) => {
let errMessage = Utils.getErrorMsg(error);
toaster.danger(errMessage);
});
};
2023-03-07 18:11:33 +08:00
render() {
const { loading, errorMsg, config_dict, file_ext_white_list, force_adfs_login, disable_org_encrypted_library, disable_org_user_clean_trash, user_default_quota } = this.state;
let logoPath = this.state.logoPath;
logoPath = logoPath.indexOf('image-view') != -1 ? logoPath : mediaUrl + logoPath;
2023-03-07 18:11:33 +08:00
return (
<Fragment>
<MainPanelTopbar {...this.props} />
<div className="main-panel-center flex-row">
<div className="cur-view-container">
<div className="cur-view-path">
<h3 className="sf-heading">{gettext('Settings')}</h3>
</div>
<div className="cur-view-content container mw-100">
{loading && <Loading />}
{errorMsg && <p className="error text-center mt-4">{errorMsg}</p>}
{(!loading && !errorMsg) && config_dict &&
<Fragment>
<p className="small text-secondary my-4"></p>
<Section headingText={gettext('Info')}>
<Fragment>
<InputItem
saveSetting={this.updateName}
displayName={gettext('Team name')}
keyText='orgName'
value={config_dict['org_name']}
helpTip={''}
disabled={!orgEnableAdminCustomName}
/>
{ orgEnableAdminCustomLogo && <FileItem
postFile={this.updateLogo}
displayName='Logo'
keyText='Logo'
filePath={logoPath}
fileWidth={256}
fileHeight={64}
helpTip='logo.png, 256px * 64px'
/>
}
</Fragment>
</Section>
2023-03-11 13:07:00 +08:00
<Section headingText={gettext('File Upload')}>
<Fragment>
<InputItem
saveSetting={this.orgSaveSetting}
displayName={gettext('File extension white list')}
2023-03-11 13:07:00 +08:00
keyText='file_ext_white_list'
value={file_ext_white_list}
helpTip={gettext('File extension white list for file upload via web UI and API. For example, "md;txt;docx". Empty means no limit.')}
2023-03-11 13:07:00 +08:00
/>
</Fragment>
</Section>
{enableMultiADFS &&
<Section headingText={gettext('User')}>
<CheckboxItem
saveSetting={this.orgSaveSetting}
displayName={gettext('Disable SAML user email / password login')}
keyText='force_adfs_login'
value={force_adfs_login}
helpTip={gettext('Force user to use SSO login if SAML account is bound')}
/>
</Section>
}
{(sysEnableUserCleanTrash || sysEnableEncryptedLibrary) &&
<Section headingText={gettext('Library')}>
<Fragment>
{sysEnableEncryptedLibrary &&
<CheckboxItem
saveSetting={this.orgSaveSetting}
displayName={gettext('Encrypted library')}
keyText='disable_org_encrypted_library'
value={disable_org_encrypted_library}
helpTip={gettext('Not allow user to create encrypted libraries')}
/>
}
{sysEnableUserCleanTrash &&
<CheckboxItem
saveSetting={this.orgSaveSetting}
displayName={gettext('Disable user clean trash')}
keyText='disable_org_user_clean_trash'
value={disable_org_user_clean_trash}
helpTip={gettext('Not allow user to clean library trash')}
/>
}
</Fragment>
</Section>
}
<Section headingText={gettext('User')}>
<Fragment>
<InputItem
className={'form-control'}
saveSetting={this.orgUpdateUserDefaultQuota}
displayName={gettext('User default quota')}
value={user_default_quota}
helpTip={gettext('Tip: 0 means default limit, the unit is MB')}
inputAddon={
<InputGroupText>MB</InputGroupText>
}
/>
</Fragment>
</Section>
2023-03-07 18:11:33 +08:00
</Fragment>
}
</div>
</div>
</div>
</Fragment>
);
}
}
2023-03-11 13:07:00 +08:00
export default OrgWebSettings;