| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- 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:services:AdminLdapSecurityContainer');
- /**
- * Service container for admin security page (SecurityLdapSetting.jsx)
- * @extends {Container} unstated Container
- */
- export default class AdminLdapSecurityContainer extends Container {
- constructor(appContainer) {
- super();
- if (isServer()) {
- return;
- }
- this.appContainer = appContainer;
- this.state = {
- retrieveError: null,
- serverUrl: '',
- isUserBind: false,
- ldapBindDN: '',
- ldapBindDNPassword: '',
- ldapSearchFilter: '',
- ldapAttrMapUsername: '',
- isSameUsernameTreatedAsIdenticalUser: false,
- ldapAttrMapMail: '',
- ldapAttrMapName: '',
- ldapGroupSearchBase: '',
- ldapGroupSearchFilter: '',
- ldapGroupDnProperty: '',
- };
- }
- /**
- * retrieve security data
- */
- async retrieveSecurityData() {
- try {
- const response = await apiv3Get('/security-setting/');
- const { ldapAuth } = response.data.securityParams;
- this.setState({
- serverUrl: ldapAuth.serverUrl,
- isUserBind: ldapAuth.isUserBind,
- ldapBindDN: ldapAuth.ldapBindDN,
- ldapBindDNPassword: ldapAuth.ldapBindDNPassword,
- ldapSearchFilter: ldapAuth.ldapSearchFilter,
- ldapAttrMapUsername: ldapAuth.ldapAttrMapUsername,
- isSameUsernameTreatedAsIdenticalUser: ldapAuth.isSameUsernameTreatedAsIdenticalUser,
- ldapAttrMapMail: ldapAuth.ldapAttrMapMail,
- ldapAttrMapName: ldapAuth.ldapAttrMapName,
- ldapGroupSearchBase: ldapAuth.ldapGroupSearchBase,
- ldapGroupSearchFilter: ldapAuth.ldapGroupSearchFilter,
- ldapGroupDnProperty: ldapAuth.ldapGroupDnProperty,
- });
- }
- 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 'AdminLdapSecurityContainer';
- }
- /**
- * Change serverUrl
- */
- changeServerUrl(serverUrl) {
- this.setState({ serverUrl });
- }
- /**
- * Change ldapBindMode
- */
- changeLdapBindMode() {
- this.setState({ isUserBind: !this.state.isUserBind });
- }
- /**
- * Change bindDN
- */
- changeBindDN(ldapBindDN) {
- this.setState({ ldapBindDN });
- }
- /**
- * Change bindDNPassword
- */
- changeBindDNPassword(ldapBindDNPassword) {
- this.setState({ ldapBindDNPassword });
- }
- /**
- * Change ldapSearchFilter
- */
- changeSearchFilter(ldapSearchFilter) {
- this.setState({ ldapSearchFilter });
- }
- /**
- * Change ldapAttrMapUsername
- */
- changeAttrMapUsername(ldapAttrMapUsername) {
- this.setState({ ldapAttrMapUsername });
- }
- /**
- * Switch is same username treated as identical user
- */
- switchIsSameUsernameTreatedAsIdenticalUser() {
- this.setState({ isSameUsernameTreatedAsIdenticalUser: !this.state.isSameUsernameTreatedAsIdenticalUser });
- }
- /**
- * Change ldapAttrMapMail
- */
- changeAttrMapMail(ldapAttrMapMail) {
- this.setState({ ldapAttrMapMail });
- }
- /**
- * Change ldapAttrMapName
- */
- changeAttrMapName(ldapAttrMapName) {
- this.setState({ ldapAttrMapName });
- }
- /**
- * Change ldapGroupSearchBase
- */
- changeGroupSearchBase(ldapGroupSearchBase) {
- this.setState({ ldapGroupSearchBase });
- }
- /**
- * Change ldapGroupSearchFilter
- */
- changeGroupSearchFilter(ldapGroupSearchFilter) {
- this.setState({ ldapGroupSearchFilter });
- }
- /**
- * Change ldapGroupDnProperty
- */
- changeGroupDnProperty(ldapGroupDnProperty) {
- this.setState({ ldapGroupDnProperty });
- }
- /**
- * Update ldap option
- */
- async updateLdapSetting() {
- const {
- serverUrl, isUserBind, ldapBindDN, ldapBindDNPassword, ldapSearchFilter, ldapAttrMapUsername, isSameUsernameTreatedAsIdenticalUser,
- ldapAttrMapMail, ldapAttrMapName, ldapGroupSearchBase, ldapGroupSearchFilter, ldapGroupDnProperty,
- } = this.state;
- let requestParams = {
- serverUrl,
- isUserBind,
- ldapBindDN,
- ldapBindDNPassword,
- ldapSearchFilter,
- ldapAttrMapUsername,
- isSameUsernameTreatedAsIdenticalUser,
- ldapAttrMapMail,
- ldapAttrMapName,
- ldapGroupSearchBase,
- ldapGroupSearchFilter,
- ldapGroupDnProperty,
- };
- requestParams = await removeNullPropertyFromObject(requestParams);
- const response = await apiv3Put('/security-setting/ldap', requestParams);
- const { securitySettingParams } = response.data;
- this.setState({
- serverUrl: securitySettingParams.serverUrl,
- isUserBind: securitySettingParams.isUserBind,
- ldapBindDN: securitySettingParams.ldapBindDN,
- ldapBindDNPassword: securitySettingParams.ldapBindDNPassword,
- ldapSearchFilter: securitySettingParams.ldapSearchFilter,
- ldapAttrMapUsername: securitySettingParams.ldapAttrMapUsername,
- isSameUsernameTreatedAsIdenticalUser: securitySettingParams.isSameUsernameTreatedAsIdenticalUser,
- ldapAttrMapMail: securitySettingParams.ldapAttrMapMail,
- ldapAttrMapName: securitySettingParams.ldapAttrMapName,
- ldapGroupSearchBase: securitySettingParams.ldapGroupSearchBase,
- ldapGroupSearchFilter: securitySettingParams.ldapGroupSearchFilter,
- ldapGroupDnProperty: securitySettingParams.ldapGroupDnProperty,
- });
- return response;
- }
- }
|