mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-23 04:18:21 +00:00
Improve saml login (#5392)
* improve saml login * fix code * optimize frontend page
This commit is contained in:
@@ -21,9 +21,6 @@ class OrgSAMLConfig extends Component {
|
||||
newUrlPrefix: '',
|
||||
orgUrlPrefix: '',
|
||||
metadataUrl: '',
|
||||
singleSignOnService: '',
|
||||
singleLogoutService: '',
|
||||
validDays: '',
|
||||
isBtnsShown: false,
|
||||
};
|
||||
}
|
||||
@@ -34,7 +31,6 @@ class OrgSAMLConfig extends Component {
|
||||
|
||||
hideBtns = () => {
|
||||
if (!this.state.isBtnsShown) return;
|
||||
|
||||
if (this.state.newUrlPrefix !== this.state.orgUrlPrefix) {
|
||||
this.setState({newUrlPrefix: this.state.orgUrlPrefix});
|
||||
}
|
||||
@@ -65,10 +61,6 @@ class OrgSAMLConfig extends Component {
|
||||
this.setState({singleLogoutService: e.target.value});
|
||||
}
|
||||
|
||||
inputValidDays = (e) => {
|
||||
this.setState({validDays: e.target.value});
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
seafileAPI.orgAdminGetUrlPrefix(orgID).then((res) => {
|
||||
this.setState({
|
||||
@@ -80,9 +72,6 @@ class OrgSAMLConfig extends Component {
|
||||
loading: false,
|
||||
samlConfigID: res.data.saml_config.id || '',
|
||||
metadataUrl: res.data.saml_config.metadata_url || '',
|
||||
singleSignOnService: res.data.saml_config.single_sign_on_service || '',
|
||||
singleLogoutService: res.data.saml_config.single_logout_service || '',
|
||||
validDays: res.data.saml_config.valid_days || '',
|
||||
});
|
||||
}).catch(error => {
|
||||
this.setState({
|
||||
@@ -121,24 +110,12 @@ class OrgSAMLConfig extends Component {
|
||||
});
|
||||
}
|
||||
|
||||
postIdpMetadataXml = (file) => {
|
||||
seafileAPI.orgAdminUploadIdpMetadataXml(orgID, file).then(() => {
|
||||
toaster.success(gettext('Success'));
|
||||
}).catch((error) => {
|
||||
let errMessage = Utils.getErrorMsg(error);
|
||||
toaster.danger(errMessage);
|
||||
});
|
||||
}
|
||||
|
||||
addSamlConfig = () => {
|
||||
const { metadataUrl, singleSignOnService, singleLogoutService, validDays } = this.state;
|
||||
seafileAPI.orgAdminAddSamlConfig(orgID, metadataUrl, singleSignOnService, singleLogoutService, validDays).then((res) => {
|
||||
const { metadataUrl } = this.state;
|
||||
seafileAPI.orgAdminAddSamlConfig(orgID, metadataUrl).then((res) => {
|
||||
this.setState({
|
||||
samlConfigID: res.data.saml_config.id,
|
||||
metadataUrl: res.data.saml_config.metadata_url,
|
||||
singleSignOnService: res.data.saml_config.single_sign_on_service,
|
||||
singleLogoutService: res.data.saml_config.single_logout_service,
|
||||
validDays: res.data.saml_config.valid_days,
|
||||
});
|
||||
toaster.success(gettext('Success'));
|
||||
}).catch((error) => {
|
||||
@@ -148,14 +125,11 @@ class OrgSAMLConfig extends Component {
|
||||
}
|
||||
|
||||
updateSamlConfig = () => {
|
||||
const { metadataUrl, singleSignOnService, singleLogoutService, validDays } = this.state;
|
||||
seafileAPI.orgAdminUpdateSamlConfig(orgID, metadataUrl, singleSignOnService, singleLogoutService, validDays).then((res) => {
|
||||
const { metadataUrl } = this.state;
|
||||
seafileAPI.orgAdminUpdateSamlConfig(orgID, metadataUrl).then((res) => {
|
||||
this.setState({
|
||||
samlConfigID: res.data.saml_config.id,
|
||||
metadataUrl: res.data.saml_config.metadata_url,
|
||||
singleSignOnService: res.data.saml_config.single_sign_on_service,
|
||||
singleLogoutService: res.data.saml_config.single_logout_service,
|
||||
validDays: res.data.saml_config.valid_days,
|
||||
});
|
||||
toaster.success(gettext('Success'));
|
||||
}).catch((error) => {
|
||||
@@ -169,9 +143,6 @@ class OrgSAMLConfig extends Component {
|
||||
this.setState({
|
||||
samlConfigID: '',
|
||||
metadataUrl: '',
|
||||
singleSignOnService: '',
|
||||
singleLogoutService: '',
|
||||
validDays: '',
|
||||
});
|
||||
toaster.success(gettext('Success'));
|
||||
}).catch((error) => {
|
||||
@@ -181,7 +152,7 @@ class OrgSAMLConfig extends Component {
|
||||
}
|
||||
|
||||
render() {
|
||||
const { loading, errorMsg, samlConfigID, newUrlPrefix, metadataUrl, singleSignOnService, singleLogoutService, validDays, isBtnsShown } = this.state;
|
||||
const { loading, errorMsg, samlConfigID, newUrlPrefix, metadataUrl, isBtnsShown } = this.state;
|
||||
|
||||
return (
|
||||
<Fragment>
|
||||
@@ -224,21 +195,6 @@ class OrgSAMLConfig extends Component {
|
||||
changeValue={this.inputMetadataUrl}
|
||||
displayName={gettext('App Federation Metadata URL')}
|
||||
/>
|
||||
<InputItem
|
||||
value={singleSignOnService}
|
||||
changeValue={this.inputSingleSignOnService}
|
||||
displayName={gettext('Login URL')}
|
||||
/>
|
||||
<InputItem
|
||||
value={singleLogoutService}
|
||||
changeValue={this.inputSingleLogoutService}
|
||||
displayName={gettext('Logout URL')}
|
||||
/>
|
||||
<InputItem
|
||||
value={validDays}
|
||||
changeValue={this.inputValidDays}
|
||||
displayName={gettext('Valid Days (how long our metadata is valid)')}
|
||||
/>
|
||||
<Row className="my-4">
|
||||
{samlConfigID ?
|
||||
<Fragment>
|
||||
@@ -256,16 +212,10 @@ class OrgSAMLConfig extends Component {
|
||||
</Fragment>
|
||||
</Section>
|
||||
<Section headingText={gettext('Upload IdP Files')}>
|
||||
<Fragment>
|
||||
<FileItem
|
||||
postFile={this.postIdpCertificate}
|
||||
displayName={gettext('IdP Certificate')}
|
||||
/>
|
||||
<FileItem
|
||||
postFile={this.postIdpMetadataXml}
|
||||
displayName={gettext('Federation Metadata XML')}
|
||||
/>
|
||||
</Fragment>
|
||||
<FileItem
|
||||
postFile={this.postIdpCertificate}
|
||||
displayName={gettext('IdP Certificate')}
|
||||
/>
|
||||
</Section>
|
||||
</Fragment>
|
||||
}
|
||||
|
@@ -2,7 +2,7 @@ import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Link } from '@gatsbyjs/reach-router';
|
||||
import Logo from '../../components/logo';
|
||||
import { gettext, siteRoot } from '../../utils/constants';
|
||||
import { gettext, siteRoot, enableMultiADFS } from '../../utils/constants';
|
||||
|
||||
const propTypes = {
|
||||
isSidePanelClosed: PropTypes.bool.isRequired,
|
||||
@@ -92,12 +92,14 @@ class SidePanel extends React.Component {
|
||||
<span className="nav-text">{gettext('Logs')}</span>
|
||||
</Link>
|
||||
</li>
|
||||
<li className="nav-item">
|
||||
<Link className={`nav-link ellipsis ${this.getActiveClass('SAML config')}`} to={siteRoot + 'org/samlconfig/'} onClick={() => this.tabItemClick('SAML config')} >
|
||||
<span className="sf2-icon-cog2"></span>
|
||||
<span className="nav-text">{gettext('SAML config')}</span>
|
||||
</Link>
|
||||
</li>
|
||||
{enableMultiADFS &&
|
||||
<li className="nav-item">
|
||||
<Link className={`nav-link ellipsis ${this.getActiveClass('SAML config')}`} to={siteRoot + 'org/samlconfig/'} onClick={() => this.tabItemClick('SAML config')} >
|
||||
<span className="sf2-icon-cog2"></span>
|
||||
<span className="nav-text">{gettext('SAML config')}</span>
|
||||
</Link>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -138,6 +138,7 @@ export const invitationLink = window.org ? window.org.pageOptions.invitationLink
|
||||
export const orgMemberQuotaEnabled = window.org ? window.org.pageOptions.orgMemberQuotaEnabled : '';
|
||||
export const orgEnableAdminCustomLogo = window.org ? window.org.pageOptions.orgEnableAdminCustomLogo === 'True' : false;
|
||||
export const orgEnableAdminCustomName = window.org ? window.org.pageOptions.orgEnableAdminCustomName === 'True' : false;
|
||||
export const enableMultiADFS = window.org ? window.org.pageOptions.enableMultiADFS === 'True' : false;
|
||||
|
||||
// sys admin
|
||||
export const constanceEnabled = window.sysadmin ? window.sysadmin.pageOptions.constance_enabled : '';
|
||||
|
Reference in New Issue
Block a user