WESEEK Kaito 6 лет назад
Родитель
Сommit
10a6479908

+ 1 - 3
src/client/js/app.jsx

@@ -56,7 +56,6 @@ import TagContainer from './services/TagContainer';
 import UserGroupDetailContainer from './services/UserGroupDetailContainer';
 import UserGroupDetailContainer from './services/UserGroupDetailContainer';
 import AdminUsersContainer from './services/AdminUsersContainer';
 import AdminUsersContainer from './services/AdminUsersContainer';
 import AdminGeneralSecurityContainer from './services/AdminGeneralSecurityContainer';
 import AdminGeneralSecurityContainer from './services/AdminGeneralSecurityContainer';
-import AdminSecuritySettingContainer from './services/AdminSecuritySettingContainer';
 import AdminLdapSecurityContainer from './services/AdminLdapSecurityContainer';
 import AdminLdapSecurityContainer from './services/AdminLdapSecurityContainer';
 import WebsocketContainer from './services/WebsocketContainer';
 import WebsocketContainer from './services/WebsocketContainer';
 import MarkDownSettingContainer from './services/MarkDownSettingContainer';
 import MarkDownSettingContainer from './services/MarkDownSettingContainer';
@@ -217,11 +216,10 @@ if (adminMarkDownSettingElem != null) {
 
 
 const adminSecuritySettingElem = document.getElementById('admin-security-setting');
 const adminSecuritySettingElem = document.getElementById('admin-security-setting');
 if (adminSecuritySettingElem != null) {
 if (adminSecuritySettingElem != null) {
-  const adminSecuritySettingContainer = new AdminSecuritySettingContainer(appContainer);
   const adminGeneralSecurityContainer = new AdminGeneralSecurityContainer(appContainer);
   const adminGeneralSecurityContainer = new AdminGeneralSecurityContainer(appContainer);
   const adminLdapSecurityContainer = new AdminLdapSecurityContainer(appContainer);
   const adminLdapSecurityContainer = new AdminLdapSecurityContainer(appContainer);
   const adminSamlSecurityContainer = new AdminSamlSecurityContainer(appContainer);
   const adminSamlSecurityContainer = new AdminSamlSecurityContainer(appContainer);
-  const adminSecurityContainers = [adminSecuritySettingContainer, adminGeneralSecurityContainer, adminLdapSecurityContainer, adminSamlSecurityContainer];
+  const adminSecurityContainers = [adminGeneralSecurityContainer, adminLdapSecurityContainer, adminSamlSecurityContainer];
   ReactDOM.render(
   ReactDOM.render(
     <Provider inject={[injectableContainers, adminSecurityContainers]}>
     <Provider inject={[injectableContainers, adminSecurityContainers]}>
       <I18nextProvider i18n={i18n}>
       <I18nextProvider i18n={i18n}>

+ 18 - 12
src/client/js/components/Admin/Security/SecuritySetting.jsx

@@ -5,26 +5,32 @@ import { withTranslation } from 'react-i18next';
 import { createSubscribedElement } from '../../UnstatedUtils';
 import { createSubscribedElement } from '../../UnstatedUtils';
 
 
 import AppContainer from '../../../services/AppContainer';
 import AppContainer from '../../../services/AppContainer';
-import AdminSecuritySettingContainer from '../../../services/AdminSecuritySettingContainer';
+import AdminGeneralSecurityContainer from '../../../services/AdminGeneralSecurityContainer';
 
 
 class SecuritySetting extends React.Component {
 class SecuritySetting extends React.Component {
 
 
   render() {
   render() {
-    const { t, adminSecuritySettingContainer } = this.props;
+    const { t, adminGeneralSecurityContainer } = this.props;
+
     return (
     return (
       <React.Fragment>
       <React.Fragment>
         <fieldset>
         <fieldset>
           <legend className="alert-anchor">{ t('security_settings') }</legend>
           <legend className="alert-anchor">{ t('security_settings') }</legend>
           <div className="form-group">
           <div className="form-group">
-            <label htmlFor="settingForm[security:restrictGuestMode]" className="col-xs-3 control-label">{ t('security_setting.Guest Users Access') }</label>
+            <label
+              htmlFor={adminGeneralSecurityContainer.state.currentRestrictGuestMode}
+              className="col-xs-3 control-label"
+            >
+              { t('security_setting.Guest Users Access') }
+            </label>
             <div className="col-xs-6">
             <div className="col-xs-6">
-              <input
-                id="restrictGuestMode"
-                type="checkbox"
-                checked={adminSecuritySettingContainer.state.currentRestrictGuestMode}
-                onChange={() => { adminSecuritySettingContainer.switchRestrictGuestMode() }}
-              />
-              <option value={adminSecuritySettingContainer.state.currentRestrictGuestMode}>{ t('modeLabel') }</option>
+              <select
+                className="form-control selectpicker"
+                name="settingForm[security:restrictGuestMode]"
+                value="{ getConfig('crowi', 'security:restrictGuestMode') }"
+              >
+                <option value="{ t(modeValue) }">{ t('modeLabel') }</option>
+              </select>
               <p className="alert alert-warning mt-2">
               <p className="alert alert-warning mt-2">
                 <i className="icon-exclamation icon-fw">
                 <i className="icon-exclamation icon-fw">
                 </i><b>FIXED</b>
                 </i><b>FIXED</b>
@@ -98,11 +104,11 @@ SecuritySetting.propTypes = {
   t: PropTypes.func.isRequired, // i18next
   t: PropTypes.func.isRequired, // i18next
   appContainer: PropTypes.instanceOf(AppContainer).isRequired,
   appContainer: PropTypes.instanceOf(AppContainer).isRequired,
   csrf: PropTypes.string,
   csrf: PropTypes.string,
-  adminSecuritySettingContainer: PropTypes.instanceOf(AdminSecuritySettingContainer).isRequired,
+  adminGeneralSecurityContainer: PropTypes.instanceOf(AdminGeneralSecurityContainer).isRequired,
 };
 };
 
 
 const SecuritySettingWrapper = (props) => {
 const SecuritySettingWrapper = (props) => {
-  return createSubscribedElement(SecuritySetting, props, [AppContainer, AdminSecuritySettingContainer]);
+  return createSubscribedElement(SecuritySetting, props, [AppContainer, AdminGeneralSecurityContainer]);
 };
 };
 
 
 export default withTranslation()(SecuritySettingWrapper);
 export default withTranslation()(SecuritySettingWrapper);

+ 72 - 0
src/client/js/services/AdminGeneralSecurityContainer.js

@@ -18,6 +18,10 @@ export default class AdminGeneralSecurityContainer extends Container {
 
 
     this.state = {
     this.state = {
       // TODO GW-583 set value
       // TODO GW-583 set value
+      currentRestrictGuestMode: ' ',
+      currentpageCompleteDeletionAuthority: ' ',
+      hideRestrictedByOwner: true,
+      hideRestrictedByGroup: true,
       useOnlyEnvVarsForSomeOptions: true,
       useOnlyEnvVarsForSomeOptions: true,
       isLocalEnabled: true,
       isLocalEnabled: true,
       registrationMode: 'open',
       registrationMode: 'open',
@@ -72,4 +76,72 @@ export default class AdminGeneralSecurityContainer extends Container {
     this.setState({ isSamlEnabled: !this.state.isSamlEnabled });
     this.setState({ isSamlEnabled: !this.state.isSamlEnabled });
   }
   }
 
 
+  /**
+   * Switch restrictGuestMode
+   */
+  switchRestrictGuestMode(restrictGuestModeLabel) {
+    this.setState({ currentRestrictGuestMode: restrictGuestModeLabel });
+  }
+
+  /**
+   * Switch pageCompleteDeletionAuthority
+   */
+  switchPageCompleteDeletionAuthority(pageCompleteDeletionAuthorityLabel) {
+    this.setState({ currentpageCompleteDeletionAuthority: pageCompleteDeletionAuthorityLabel });
+  }
+
+  /**
+   * Switch hideRestrictedByOwner
+   */
+  switchHideRestrictedByOwner() {
+    this.setState({ hideRestrictedByOwner:  !this.state.hideRestrictedByOwner });
+  }
+
+  /**
+   * Switch hideRestrictedByGroup
+   */
+  switchHideRestrictedByGroup() {
+    this.setState({ hideRestrictedByGroup:  !this.state.hideRestrictedByGroup });
+  }
+
+  /**
+   * Update restrictGuestMode
+   * @memberOf AdminSecuritySettingContainer
+   * @return {string} Appearance
+   */
+  async updateRestrictGuestMode() {
+    const response = await this.appContainer.apiv3.put('/security-setting/guest-mode', {
+      restrictGuestMode: this.state.currentRestrictGuestMode,
+    });
+    const { securitySettingParams } = response.data;
+    return securitySettingParams;
+  }
+
+  /**
+   * Update pageDeletion
+   * @memberOf AdminSecuritySettingContainer
+   * @return {string} pageDeletion
+   */
+  async updatePageCompleteDeletionAuthority() {
+    const response = await this.appContainer.apiv3.put('/security-setting/page-deletion', {
+      pageCompleteDeletionAuthority: this.state.currentPageCompleteDeletionAuthority,
+    });
+    const { securitySettingParams } = response.data;
+    return securitySettingParams;
+  }
+
+  /**
+   * Update function
+   * @memberOf AdminSecucitySettingContainer
+   * @return {string} Functions
+   */
+  async updateSecurityFunction() {
+    const response = await this.appContainer.apiv3.put('/security-setting/function', {
+      hideRestrictedByGroup: this.state.hideRestrictedByGroup,
+      hideRestrictedByOwner: this.state.hideRestrictedByOwner,
+    });
+    const { securitySettingParams } = response.data;
+    return securitySettingParams;
+  }
+
 }
 }