mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-17 15:53:28 +00:00
Improve adfs sso page (#5874)
* replace url_prefix with org_id * enable connect&disconnect saml2 * improve adfs/saml login page * enable adfs/saml user set password * connect/disconnect saml page * improve org saml config page * fix code * compatibility old version * add migrete_idp_certificates.py * simplify org saml config API
This commit is contained in:
78
frontend/src/components/user-settings/social-login-saml.js
Normal file
78
frontend/src/components/user-settings/social-login-saml.js
Normal file
@@ -0,0 +1,78 @@
|
||||
import React from 'react';
|
||||
import { Modal, ModalHeader, ModalBody, ModalFooter, Button } from 'reactstrap';
|
||||
import { gettext, siteRoot } from '../../utils/constants';
|
||||
import ModalPortal from '../modal-portal';
|
||||
|
||||
const {
|
||||
csrfToken,
|
||||
isOrgContext,
|
||||
orgID,
|
||||
samlConnected,
|
||||
enableMultiADFS,
|
||||
orgSamlConnected,
|
||||
socialNextPage
|
||||
} = window.app.pageOptions;
|
||||
|
||||
class SocialLoginSAML extends React.Component {
|
||||
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.form = React.createRef();
|
||||
this.state = {
|
||||
isConfirmDialogOpen: false
|
||||
};
|
||||
}
|
||||
|
||||
confirmDisconnect = () => {
|
||||
this.setState({
|
||||
isConfirmDialogOpen: true
|
||||
});
|
||||
};
|
||||
|
||||
disconnect = () => {
|
||||
this.form.current.submit();
|
||||
};
|
||||
|
||||
toggleDialog = () => {
|
||||
this.setState({
|
||||
isConfirmDialogOpen: !this.state.isConfirmDialogOpen
|
||||
});
|
||||
};
|
||||
|
||||
render() {
|
||||
let connectUrl = (enableMultiADFS && isOrgContext) ? `${siteRoot}org/custom/${orgID}/saml2/connect/?next=${encodeURIComponent(socialNextPage)}` : `${siteRoot}saml2/connect/?next=${encodeURIComponent(socialNextPage)}`;
|
||||
let disconnectUrl = (orgSamlConnected && isOrgContext) ? `${siteRoot}org/custom/${orgID}/saml2/disconnect/?next=${encodeURIComponent(socialNextPage)}` : `${siteRoot}saml2/disconnect/?next=${encodeURIComponent(socialNextPage)}`;
|
||||
|
||||
return (
|
||||
<React.Fragment>
|
||||
<div className="setting-item" id="social-auth">
|
||||
<h3 className="setting-item-heading">{gettext('Social Login')}</h3>
|
||||
<p className="mb-2">{'SAML'}</p>
|
||||
{(samlConnected || (orgSamlConnected && isOrgContext)) ?
|
||||
<button className="btn btn-outline-primary" onClick={this.confirmDisconnect}>{gettext('Disconnect')}</button> :
|
||||
<a href={connectUrl} className="btn btn-outline-primary">{gettext('Connect')}</a>
|
||||
}
|
||||
</div>
|
||||
{this.state.isConfirmDialogOpen && (
|
||||
<ModalPortal>
|
||||
<Modal centered={true} isOpen={true} toggle={this.toggleDialog}>
|
||||
<ModalHeader toggle={this.toggleDialog}>{gettext('Disconnect')}</ModalHeader>
|
||||
<ModalBody>
|
||||
<p>{gettext('Are you sure you want to disconnect?')}</p>
|
||||
<form ref={this.form} className="d-none" method="post" action={disconnectUrl}>
|
||||
<input type="hidden" name="csrfmiddlewaretoken" value={csrfToken} />
|
||||
</form>
|
||||
</ModalBody>
|
||||
<ModalFooter>
|
||||
<Button color="secondary" onClick={this.toggleDialog}>{gettext('Cancel')}</Button>
|
||||
<Button color="primary" onClick={this.disconnect}>{gettext('Disconnect')}</Button>
|
||||
</ModalFooter>
|
||||
</Modal>
|
||||
</ModalPortal>
|
||||
)}
|
||||
</React.Fragment>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default SocialLoginSAML;
|
Reference in New Issue
Block a user