itizawa 6 лет назад
Родитель
Сommit
8824257ed7

+ 13 - 7
src/client/js/components/Admin/Security/SecuritySetting.jsx

@@ -45,7 +45,7 @@ class SecuritySetting extends React.Component {
 
   render() {
     const { t, adminGeneralSecurityContainer } = this.props;
-    const { currentRestrictGuestMode } = adminGeneralSecurityContainer.state;
+    const { currentRestrictGuestMode, currentPageCompleteDeletionAuthority } = adminGeneralSecurityContainer.state;
     const helpPageListingByOwner = { __html: t('security_setting.page_listing_1') };
     const helpPageListingByGroup = { __html: t('security_setting.page_listing_2') };
     // eslint-disable-next-line max-len
@@ -76,8 +76,10 @@ class SecuritySetting extends React.Component {
                     aria-expanded="false"
                     disabled={adminGeneralSecurityContainer.state.isWikiModeForced}
                   >
-                    {currentRestrictGuestMode === 'Deny' && <span className="pull-left">{t('security_setting.guest_mode.deny')}</span>}
-                    {currentRestrictGuestMode === 'Readonly' && <span className="pull-left">{t('security_setting.guest_mode.readonly')}</span>}
+                    <span className="pull-left">
+                      {currentRestrictGuestMode === 'Deny' && t('security_setting.guest_mode.deny')}
+                      {currentRestrictGuestMode === 'Readonly' && t('security_setting.guest_mode.readonly')}
+                    </span>
                     <span className="bs-caret pull-right">
                       <span className="caret" />
                     </span>
@@ -157,7 +159,11 @@ class SecuritySetting extends React.Component {
               <div className="my-0 btn-group">
                 <div className="dropdown">
                   <button className="btn btn-default dropdown-toggle w-100" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
-                    <span className="pull-left">{t(`security_setting.${adminGeneralSecurityContainer.state.currentPageCompleteDeletionAuthority}`)}</span>
+                    <span className="pull-left">
+                      {currentPageCompleteDeletionAuthority === 'anyOne' && t('security_setting.anyone')}
+                      {currentPageCompleteDeletionAuthority === 'adminOnly' && t('security_setting.admin_only')}
+                      {currentPageCompleteDeletionAuthority === 'adminAndAuthor' && t('security_setting.admin_and_author')}
+                    </span>
                     <span className="bs-caret pull-right">
                       <span className="caret" />
                     </span>
@@ -168,7 +174,7 @@ class SecuritySetting extends React.Component {
                       key="anyone"
                       role="presentation"
                       type="button"
-                      onClick={() => { adminGeneralSecurityContainer.changePageCompleteDeletionAuthority('anyone') }}
+                      onClick={() => { adminGeneralSecurityContainer.changePageCompleteDeletionAuthority('anyOne') }}
                     >
                       <a role="menuitem">{t('security_setting.anyone')}</a>
                     </li>
@@ -176,7 +182,7 @@ class SecuritySetting extends React.Component {
                       key="admin_only"
                       role="presentation"
                       type="button"
-                      onClick={() => { adminGeneralSecurityContainer.changePageCompleteDeletionAuthority('admin_only') }}
+                      onClick={() => { adminGeneralSecurityContainer.changePageCompleteDeletionAuthority('adminOnly') }}
                     >
                       <a role="menuitem">{t('security_setting.admin_only')}</a>
                     </li>
@@ -184,7 +190,7 @@ class SecuritySetting extends React.Component {
                       key="admin_and_author"
                       role="presentation"
                       type="button"
-                      onClick={() => { adminGeneralSecurityContainer.changePageCompleteDeletionAuthority('admin_and_author') }}
+                      onClick={() => { adminGeneralSecurityContainer.changePageCompleteDeletionAuthority('adminAndAuthor') }}
                     >
                       <a role="menuitem">{t('security_setting.admin_and_author')}</a>
                     </li>

+ 2 - 2
src/client/js/services/AdminGeneralSecurityContainer.js

@@ -21,7 +21,7 @@ export default class AdminGeneralSecurityContainer extends Container {
       isWikiModeForced: false,
       wikiMode: '',
       currentRestrictGuestMode: 'Deny',
-      currentPageCompleteDeletionAuthority: 'anyone',
+      currentPageCompleteDeletionAuthority: 'adminOnly',
       isHideRestrictedByOwner: false,
       isHideRestrictedByGroup: false,
       useOnlyEnvVarsForSomeOptions: false,
@@ -44,7 +44,7 @@ export default class AdminGeneralSecurityContainer extends Container {
     const { generalSetting, generalAuth } = response.data.securityParams;
     this.onIsWikiModeForced(generalSetting.wikiMode);
     this.setState({
-      currentPageCompleteDeletionAuthority: generalSetting.pageCompleteDeletionAuthority || 'anyone',
+      currentPageCompleteDeletionAuthority: generalSetting.pageCompleteDeletionAuthority || 'anyOne',
       isHideRestrictedByOwner: generalSetting.hideRestrictedByOwner || false,
       isHideRestrictedByGroup: generalSetting.hideRestrictedByGroup || false,
       wikiMode: generalSetting.wikiMode || '',

+ 10 - 5
src/server/routes/apiv3/security-setting.js

@@ -13,10 +13,13 @@ const { body } = require('express-validator/check');
 const ErrorV3 = require('../../models/vo/error-apiv3');
 
 const validator = {
-  // TODO correct validator
   generalSetting: [
-    body('restrictGuestMode').isString(),
-    body('pageCompleteDeletionAuthority').isString(),
+    body('restrictGuestMode').isString().isIn([
+      'Deny', 'Readonly',
+    ]),
+    body('pageCompleteDeletionAuthority').isString().isIn([
+      'anyOne', 'adminOnly', 'adminAndAuthor',
+    ]),
     body('hideRestrictedByOwner').isBoolean(),
     body('hideRestrictedByGroup').isBoolean(),
   ],
@@ -27,7 +30,9 @@ const validator = {
     ]),
   ],
   localSetting: [
-    body('registrationMode').isString(),
+    body('registrationMode').isString().isIn([
+      'Open', 'Restricted', 'Closed',
+    ]),
     body('registrationWhiteList').isArray(),
   ],
   ldapAuth: [
@@ -431,7 +436,7 @@ module.exports = (crowi) => {
     setupStrategies = setupStrategies.filter(strategy => strategy !== authId);
 
     if (setupStrategies.length === 0) {
-      return res.apiv3Err(new ErrorV3('Can not turn everything off'));
+      return res.apiv3Err(new ErrorV3('Can not turn everything off'), 405);
     }
 
     const enableParams = { [`security:passport-${authId}:isEnabled`]: isEnabled };