| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- import { isServer } from '@growi/core/dist/utils';
- import { Container } from 'unstated';
- import loggerFactory from '~/utils/logger';
- import { removeNullPropertyFromObject } from '~/utils/object-utils';
- import { apiv3Get, apiv3Put } from '../util/apiv3-client';
- const logger = loggerFactory('growi:security:AdminSamlSecurityContainer');
- /**
- * Service container for admin security page (SecuritySamlSetting.jsx)
- * @extends {Container} unstated Container
- */
- export default class AdminSamlSecurityContainer extends Container {
- constructor(appContainer) {
- super();
- if (isServer()) {
- return;
- }
- this.appContainer = appContainer;
- this.state = {
- retrieveError: null,
- // TODO GW-1324 ABLCRure DB value takes precedence
- useOnlyEnvVars: false,
- missingMandatoryConfigKeys: [],
- samlEntryPoint: '',
- samlIssuer: '',
- samlCert: '',
- samlAttrMapId: '',
- samlAttrMapUsername: '',
- samlAttrMapMail: '',
- samlAttrMapFirstName: '',
- samlAttrMapLastName: '',
- isSameUsernameTreatedAsIdenticalUser: false,
- isSameEmailTreatedAsIdenticalUser: false,
- samlABLCRule: '',
- envEntryPoint: '',
- envIssuer: '',
- envCert: '',
- envAttrMapId: '',
- envAttrMapUsername: '',
- envAttrMapMail: '',
- envAttrMapFirstName: '',
- envAttrMapLastName: '',
- envABLCRule: '',
- };
- }
- /**
- * retrieve security data
- */
- async retrieveSecurityData() {
- try {
- const response = await apiv3Get('/security-setting/');
- const { samlAuth } = response.data.securityParams;
- this.setState({
- missingMandatoryConfigKeys: samlAuth.missingMandatoryConfigKeys,
- useOnlyEnvVars: samlAuth.useOnlyEnvVarsForSomeOptions,
- samlEntryPoint: samlAuth.samlEntryPoint,
- samlIssuer: samlAuth.samlIssuer,
- samlCert: samlAuth.samlCert,
- samlAttrMapId: samlAuth.samlAttrMapId,
- samlAttrMapUsername: samlAuth.samlAttrMapUsername,
- samlAttrMapMail: samlAuth.samlAttrMapMail,
- samlAttrMapFirstName: samlAuth.samlAttrMapFirstName,
- samlAttrMapLastName: samlAuth.samlAttrMapLastName,
- isSameUsernameTreatedAsIdenticalUser: samlAuth.isSameUsernameTreatedAsIdenticalUser,
- isSameEmailTreatedAsIdenticalUser: samlAuth.isSameEmailTreatedAsIdenticalUser,
- samlABLCRule: samlAuth.samlABLCRule,
- envEntryPoint: samlAuth.samlEnvVarEntryPoint,
- envIssuer: samlAuth.samlEnvVarIssuer,
- envCert: samlAuth.samlEnvVarCert,
- envAttrMapId: samlAuth.samlEnvVarAttrMapId,
- envAttrMapUsername: samlAuth.samlEnvVarAttrMapUsername,
- envAttrMapMail: samlAuth.samlEnvVarAttrMapMail,
- envAttrMapFirstName: samlAuth.samlEnvVarAttrMapFirstName,
- envAttrMapLastName: samlAuth.samlEnvVarAttrMapLastName,
- envABLCRule: samlAuth.samlEnvVarABLCRule,
- });
- }
- catch (err) {
- this.setState({ retrieveError: err });
- logger.error(err);
- throw new Error('Failed to fetch data');
- }
- }
- /**
- * Workaround for the mangling in production build to break constructor.name
- */
- static getClassName() {
- return 'AdminSamlSecurityContainer';
- }
- /**
- * Change samlEntryPoint
- */
- changeSamlEntryPoint(inputValue) {
- this.setState({ samlEntryPoint: inputValue });
- }
- /**
- * Change samlIssuer
- */
- changeSamlIssuer(inputValue) {
- this.setState({ samlIssuer: inputValue });
- }
- /**
- * Change samlCert
- */
- changeSamlCert(inputValue) {
- this.setState({ samlCert: inputValue });
- }
- /**
- * Change samlAttrMapId
- */
- changeSamlAttrMapId(inputValue) {
- this.setState({ samlAttrMapId: inputValue });
- }
- /**
- * Change samlAttrMapUsername
- */
- changeSamlAttrMapUserName(inputValue) {
- this.setState({ samlAttrMapUsername: inputValue });
- }
- /**
- * Change samlAttrMapMail
- */
- changeSamlAttrMapMail(inputValue) {
- this.setState({ samlAttrMapMail: inputValue });
- }
- /**
- * Change samlAttrMapFirstName
- */
- changeSamlAttrMapFirstName(inputValue) {
- this.setState({ samlAttrMapFirstName: inputValue });
- }
- /**
- * Change samlAttrMapLastName
- */
- changeSamlAttrMapLastName(inputValue) {
- this.setState({ samlAttrMapLastName: inputValue });
- }
- /**
- * Switch isSameUsernameTreatedAsIdenticalUser
- */
- switchIsSameUsernameTreatedAsIdenticalUser() {
- this.setState({ isSameUsernameTreatedAsIdenticalUser: !this.state.isSameUsernameTreatedAsIdenticalUser });
- }
- /**
- * Switch isSameEmailTreatedAsIdenticalUser
- */
- switchIsSameEmailTreatedAsIdenticalUser() {
- this.setState({ isSameEmailTreatedAsIdenticalUser: !this.state.isSameEmailTreatedAsIdenticalUser });
- }
- /**
- * Change samlABLCRule
- */
- changeSamlABLCRule(inputValue) {
- this.setState({ samlABLCRule: inputValue });
- }
- /**
- * Update saml option
- */
- async updateSamlSetting() {
- let requestParams = {
- entryPoint: this.state.samlEntryPoint,
- issuer: this.state.samlIssuer,
- cert: this.state.samlCert,
- attrMapId: this.state.samlAttrMapId,
- attrMapUsername: this.state.samlAttrMapUsername,
- attrMapMail: this.state.samlAttrMapMail,
- attrMapFirstName: this.state.samlAttrMapFirstName,
- attrMapLastName: this.state.samlAttrMapLastName,
- isSameUsernameTreatedAsIdenticalUser: this.state.isSameUsernameTreatedAsIdenticalUser,
- isSameEmailTreatedAsIdenticalUser: this.state.isSameEmailTreatedAsIdenticalUser,
- ABLCRule: this.state.samlABLCRule,
- };
- requestParams = await removeNullPropertyFromObject(requestParams);
- const response = await apiv3Put('/security-setting/saml', requestParams);
- const { securitySettingParams } = response.data;
- this.setState({
- missingMandatoryConfigKeys: securitySettingParams.missingMandatoryConfigKeys,
- samlEntryPoint: securitySettingParams.samlEntryPoint,
- samlIssuer: securitySettingParams.samlIssuer,
- samlCert: securitySettingParams.samlCert,
- samlAttrMapId: securitySettingParams.samlAttrMapId,
- samlAttrMapUsername: securitySettingParams.samlAttrMapUsername,
- samlAttrMapMail: securitySettingParams.samlAttrMapMail,
- samlAttrMapFirstName: securitySettingParams.samlAttrMapFirstName,
- samlAttrMapLastName: securitySettingParams.samlAttrMapLastName,
- isSameUsernameTreatedAsIdenticalUser: securitySettingParams.isSameUsernameTreatedAsIdenticalUser,
- isSameEmailTreatedAsIdenticalUser: securitySettingParams.isSameEmailTreatedAsIdenticalUser,
- samlABLCRule: securitySettingParams.samlABLCRule,
- });
- return response;
- }
- }
|