itizawa 6 лет назад
Родитель
Сommit
106d7b6c98

+ 3 - 3
resource/locales/en-US/translation.json

@@ -453,8 +453,8 @@
     "optional": "Optional",
     "Treat username matching as identical": "Automatically bind external accounts newly logged in to local accounts when <code>username</code> match",
     "Treat username matching as identical_warn": "WARNING: Be aware of security because the system treats the same user as a match of <code>username</code>.",
-    "Treat email matching as identical": "Automatically bind external accounts newly logged in to local accounts when <code>%s</code> match",
-    "Treat email matching as identical_warn": "WARNING: Be aware of security because the system treats the same user as a match of <code>%s</code>.",
+    "Treat email matching as identical": "Automatically bind external accounts newly logged in to local accounts when <code>email</code> match",
+    "Treat email matching as identical_warn": "WARNING: Be aware of security because the system treats the same user as a match of <code>email</code>.",
     "Use env var if empty": "Use env var <code>{{env}}</code> if empty",
     "Use default if both are empty": "If both ​​are empty, the default value <code>{{target}}</code> is used.",
     "missing mandatory configs": "The following mandatory items are not set in either database nor environment variables.",
@@ -643,7 +643,7 @@
     "tab_switch": "Save tab-switching in the browser",
     "save_edit": "Save edit tab and history tab switching in the browser and make it object for forward/back command of the browser.",
     "by_invalidating": "By invalidating, you can make page transition as the only object for forward/back command of the browser.",
-    "nocdn_desc": "This function is disabled when the environment variable <code>NO_CDN=true</code>.<br>Github style has been forcibly applied.",
+    "nocdn_desc": "This function is disabled when the environment variable <code>NO_CDN=true</code>.<br>GutHub style has been forcibly applied.",
     "custom_title": "Custom Title",
     "custom_title_detail": "You can customize <code>%s</code> tag.<br><code>%s</code> will be automatically replaced with the app name, and <code>%s</code> will be replaced with the page name/path.",
     "custom_header": "Custom HTML Header",

+ 4 - 4
src/client/js/app.jsx

@@ -60,13 +60,13 @@ import AdminAppContainer from './services/AdminAppContainer';
 import WebsocketContainer from './services/WebsocketContainer';
 import AdminMarkDownContainer from './services/AdminMarkDownContainer';
 import AdminExternalAccountsContainer from './services/AdminExternalAccountsContainer';
+import AdminLocalSecurityContainer from './services/AdminLocalSecurityContainer';
 import AdminSamlSecurityContainer from './services/AdminSamlSecurityContainer';
 import AdminOidcSecurityContainer from './services/AdminOidcSecurityContainer';
 import AdminBasicSecurityContainer from './services/AdminBasicSecurityContainer';
 import AdminGoogleSecurityContainer from './services/AdminGoogleSecurityContainer';
-import AdminGithubSecurityContainer from './services/AdminGithubSecurityConatainer';
+import AdminGutHubSecurityContainer from './services/AdminGitHubSecurityConatainer';
 import AdminTwitterSecurityContainer from './services/AdminTwitterSecurityContainer';
-import AdminLocalSecurityContainer from './services/AdminLocalSecurityContainer';
 
 const logger = loggerFactory('growi:app');
 
@@ -256,11 +256,11 @@ if (adminSecuritySettingElem != null) {
   const adminOidcSecurityContainer = new AdminOidcSecurityContainer(appContainer);
   const adminBasicSecurityContainer = new AdminBasicSecurityContainer(appContainer);
   const adminGoogleSecurityContainer = new AdminGoogleSecurityContainer(appContainer);
-  const adminGithubSecurityContainer = new AdminGithubSecurityContainer(appContainer);
+  const adminGutHubSecurityContainer = new AdminGutHubSecurityContainer(appContainer);
   const adminTwitterSecurityContainer = new AdminTwitterSecurityContainer(appContainer);
   const adminSecurityContainers = [
     adminGeneralSecurityContainer, adminLocalSecurityContainer, adminLdapSecurityContainer, adminSamlSecurityContainer,
-    adminOidcSecurityContainer, adminBasicSecurityContainer, adminGoogleSecurityContainer, adminGithubSecurityContainer, adminTwitterSecurityContainer,
+    adminOidcSecurityContainer, adminBasicSecurityContainer, adminGoogleSecurityContainer, adminGutHubSecurityContainer, adminTwitterSecurityContainer,
   ];
   ReactDOM.render(
     <Provider inject={[...injectableContainers, ...adminSecurityContainers]}>

+ 28 - 34
src/client/js/components/Admin/Security/GithubSecuritySetting.jsx

@@ -9,11 +9,11 @@ import { toastSuccess, toastError } from '../../../util/apiNotification';
 
 import AppContainer from '../../../services/AppContainer';
 import AdminGeneralSecurityContainer from '../../../services/AdminGeneralSecurityContainer';
-import AdminGithubSecurityContainer from '../../../services/AdminGithubSecurityConatainer';
+import AdminGutHubSecurityContainer from '../../../services/AdminGitHubSecurityConatainer';
 
 const logger = loggerFactory('growi:security:AdminGitHubSecurityContainer');
 
-class GithubSecurityManagement extends React.Component {
+class GutHubSecurityManagement extends React.Component {
 
   constructor(props) {
     super(props);
@@ -26,10 +26,10 @@ class GithubSecurityManagement extends React.Component {
   }
 
   async componentDidMount() {
-    const { adminGithubSecurityContainer } = this.props;
+    const { adminGutHubSecurityContainer } = this.props;
 
     try {
-      await adminGithubSecurityContainer.retrieveSecurityData();
+      await adminGutHubSecurityContainer.retrieveSecurityData();
     }
     catch (err) {
       toastError(err);
@@ -39,10 +39,10 @@ class GithubSecurityManagement extends React.Component {
   }
 
   async onClickSubmit() {
-    const { t, adminGithubSecurityContainer } = this.props;
+    const { t, adminGutHubSecurityContainer } = this.props;
 
     try {
-      await adminGithubSecurityContainer.updateGitHubSetting();
+      await adminGutHubSecurityContainer.updateGitHubSetting();
       toastSuccess(t('security_setting.OAuth.GitHub.updated_github'));
     }
     catch (err) {
@@ -52,7 +52,7 @@ class GithubSecurityManagement extends React.Component {
   }
 
   render() {
-    const { t, adminGeneralSecurityContainer, adminGithubSecurityContainer } = this.props;
+    const { t, adminGeneralSecurityContainer, adminGutHubSecurityContainer } = this.props;
     return (
 
       <React.Fragment>
@@ -72,12 +72,12 @@ class GithubSecurityManagement extends React.Component {
           <div className="col-xs-6 text-left">
             <div className="checkbox checkbox-success">
               <input
-                id="isGithubEnabled"
+                id="isGutHubEnabled"
                 type="checkbox"
                 checked={adminGeneralSecurityContainer.state.isGitHubEnabled}
-                onChange={() => { adminGeneralSecurityContainer.switchIsGithubOAuthEnabled() }}
+                onChange={() => { adminGeneralSecurityContainer.switchIsGutHubOAuthEnabled() }}
               />
-              <label htmlFor="isGithubEnabled">
+              <label htmlFor="isGutHubEnabled">
                 {t('security_setting.OAuth.GitHub.enable_github')}
               </label>
             </div>
@@ -90,7 +90,7 @@ class GithubSecurityManagement extends React.Component {
             <input
               className="form-control"
               type="text"
-              value={adminGithubSecurityContainer.state.appSiteUrl}
+              value={adminGutHubSecurityContainer.state.appSiteUrl}
               readOnly
             />
             <p className="help-block small">{t('security_setting.desc_of_callback_URL', { AuthName: 'OAuth' })}</p>
@@ -107,15 +107,9 @@ class GithubSecurityManagement extends React.Component {
         </div>
 
 
-        {adminGeneralSecurityContainer.state.isGithubEnabled && (
+        {adminGeneralSecurityContainer.state.isGitHubEnabled && (
           <React.Fragment>
 
-            {!adminGithubSecurityContainer.state.isGitHubStrategySetup && (
-              <div className="alert alert-warning">
-                <p>{t('security_setting.setup_not_completed_yet')}</p>
-              </div>
-            )}
-
             <div className="row mb-5">
               <label htmlFor="githubClientId" className="col-xs-3 text-right">{t('security_setting.clientID')}</label>
               <div className="col-xs-6">
@@ -123,8 +117,8 @@ class GithubSecurityManagement extends React.Component {
                   className="form-control"
                   type="text"
                   name="githubClientId"
-                  value={adminGithubSecurityContainer.state.githubClientId}
-                  onChange={e => adminGithubSecurityContainer.changeGithubClientId(e.target.value)}
+                  value={adminGutHubSecurityContainer.state.githubClientId}
+                  onChange={e => adminGutHubSecurityContainer.changeGutHubClientId(e.target.value)}
                 />
                 <p className="help-block">
                   <small dangerouslySetInnerHTML={{ __html: t('security_setting.Use env var if empty', { env: 'OAUTH_GITHUB_CLIENT_ID' }) }} />
@@ -139,8 +133,8 @@ class GithubSecurityManagement extends React.Component {
                   className="form-control"
                   type="text"
                   name="githubClientSecret"
-                  defaultValue={adminGithubSecurityContainer.state.githubClientSecret}
-                  onChange={e => adminGithubSecurityContainer.changeGithubClientSecret(e.target.value)}
+                  defaultValue={adminGutHubSecurityContainer.state.githubClientSecret}
+                  onChange={e => adminGutHubSecurityContainer.changeGutHubClientSecret(e.target.value)}
                 />
                 <p className="help-block">
                   <small dangerouslySetInnerHTML={{ __html: t('security_setting.Use env var if empty', { env: 'OAUTH_GITHUB_CLIENT_SECRET' }) }} />
@@ -152,13 +146,13 @@ class GithubSecurityManagement extends React.Component {
               <div className="col-xs-offset-3 col-xs-6 text-left">
                 <div className="checkbox checkbox-success">
                   <input
-                    id="bindByUserNameGithub"
+                    id="bindByUserNameGutHub"
                     type="checkbox"
-                    checked={adminGithubSecurityContainer.state.isSameUsernameTreatedAsIdenticalUser}
-                    onChange={() => { adminGithubSecurityContainer.switchIsSameUsernameTreatedAsIdenticalUser() }}
+                    checked={adminGutHubSecurityContainer.state.isSameUsernameTreatedAsIdenticalUser}
+                    onChange={() => { adminGutHubSecurityContainer.switchIsSameUsernameTreatedAsIdenticalUser() }}
                   />
                   <label
-                    htmlFor="bindByUserNameGithub"
+                    htmlFor="bindByUserNameGutHub"
                     dangerouslySetInnerHTML={{ __html: t('security_setting.Treat email matching as identical') }}
                   />
                 </div>
@@ -182,12 +176,12 @@ class GithubSecurityManagement extends React.Component {
         <div style={{ minHeight: '300px' }}>
           <h4>
             <i className="icon-question" aria-hidden="true"></i>
-            <a href="#collapseHelpForGithubOauth" data-toggle="collapse"> {t('security_setting.OAuth.how_to.github')}</a>
+            <a href="#collapseHelpForGutHubOauth" data-toggle="collapse"> {t('security_setting.OAuth.how_to.github')}</a>
           </h4>
-          <ol id="collapseHelpForGithubOauth" className="collapse">
+          <ol id="collapseHelpForGutHubOauth" className="collapse">
             {/* eslint-disable-next-line max-len */}
             <li dangerouslySetInnerHTML={{ __html: t('security_setting.OAuth.GitHub.register_1', { link: '<a href="https://github.com/settings/developers" target=_blank>GitHub Developer Settings</a>' }) }} />
-            <li dangerouslySetInnerHTML={{ __html: t('security_setting.OAuth.GitHub.register_2', { url: adminGithubSecurityContainer.state.callbackUrl }) }} />
+            <li dangerouslySetInnerHTML={{ __html: t('security_setting.OAuth.GitHub.register_2', { url: adminGutHubSecurityContainer.state.callbackUrl }) }} />
             <li dangerouslySetInnerHTML={{ __html: t('security_setting.OAuth.GitHub.register_3') }} />
           </ol>
         </div>
@@ -201,15 +195,15 @@ class GithubSecurityManagement extends React.Component {
 }
 
 
-GithubSecurityManagement.propTypes = {
+GutHubSecurityManagement.propTypes = {
   t: PropTypes.func.isRequired, // i18next
   appContainer: PropTypes.instanceOf(AppContainer).isRequired,
   adminGeneralSecurityContainer: PropTypes.instanceOf(AdminGeneralSecurityContainer).isRequired,
-  adminGithubSecurityContainer: PropTypes.instanceOf(AdminGithubSecurityContainer).isRequired,
+  adminGutHubSecurityContainer: PropTypes.instanceOf(AdminGutHubSecurityContainer).isRequired,
 };
 
-const GithubSecurityManagementWrapper = (props) => {
-  return createSubscribedElement(GithubSecurityManagement, props, [AppContainer, AdminGeneralSecurityContainer, AdminGithubSecurityContainer]);
+const GutHubSecurityManagementWrapper = (props) => {
+  return createSubscribedElement(GutHubSecurityManagement, props, [AppContainer, AdminGeneralSecurityContainer, AdminGutHubSecurityContainer]);
 };
 
-export default withTranslation()(GithubSecurityManagementWrapper);
+export default withTranslation()(GutHubSecurityManagementWrapper);

+ 0 - 6
src/client/js/components/Admin/Security/GoogleSecuritySetting.jsx

@@ -110,12 +110,6 @@ class GoogleSecurityManagement extends React.Component {
         {adminGeneralSecurityContainer.state.isGoogleEnabled && (
           <React.Fragment>
 
-            {!adminGoogleSecurityContainer.state.isGoogleStrategySetup && (
-              <div className="alert alert-warning">
-                <p>{t('security_setting.setup_not_completed_yet')}</p>
-              </div>
-            )}
-
             <div className="row mb-5">
               <label htmlFor="googleClientId" className="col-xs-3 text-right">{t('security_setting.clientID')}</label>
               <div className="col-xs-6">

+ 2 - 2
src/client/js/components/Admin/Security/OidcSecuritySetting.jsx

@@ -314,8 +314,8 @@ class OidcSecurityManagement extends React.Component {
 
         <div style={{ minHeight: '300px' }}>
           <h4>
-            <i className="icon-question" aria-hidden="true"></i>
-            <a href="#collapseHelpForOidcOauth" data-toggle="collapse">{t('security_setting.OAuth.how_to.oidc')}</a>
+            <i className="icon-question" aria-hidden="true" />
+            <a href="#collapseHelpForOidcOauth" data-toggle="collapse"> {t('security_setting.OAuth.how_to.oidc')}</a>
           </h4>
           <ol id="collapseHelpForOidcOauth" className="collapse">
             <li>{t('security_setting.OAuth.OIDC.register_1')}</li>

+ 2 - 2
src/client/js/components/Admin/Security/SecurityManagement.jsx

@@ -12,7 +12,7 @@ import OidcSecuritySetting from './OidcSecuritySetting';
 import SecuritySetting from './SecuritySetting';
 import BasicSecuritySetting from './BasicSecuritySetting';
 import GoogleSecuritySetting from './GoogleSecuritySetting';
-import GithubSecuritySetting from './GithubSecuritySetting';
+import GutHubSecuritySetting from './GitHubSecuritySetting';
 import TwitterSecuritySetting from './TwitterSecuritySetting';
 import FacebookSecuritySetting from './FacebookSecuritySetting';
 
@@ -94,7 +94,7 @@ class SecurityManagement extends React.Component {
                 <GoogleSecuritySetting />
               </div>
               <div id="passport-github" className="tab-pane" role="tabpanel">
-                <GithubSecuritySetting />
+                <GutHubSecuritySetting />
               </div>
               <div id="passport-twitter" className="tab-pane" role="tabpanel">
                 <TwitterSecuritySetting />

+ 0 - 6
src/client/js/components/Admin/Security/TwitterSecuritySetting.jsx

@@ -110,12 +110,6 @@ class TwitterSecurityManagement extends React.Component {
         {adminGeneralSecurityContainer.state.isTwitterEnabled && (
           <React.Fragment>
 
-            {!adminTwitterSecurityContainer.state.isTwitterStrategySetup && (
-              <div className="alert alert-warning">
-                <p>{t('security_setting.setup_not_completed_yet')}</p>
-              </div>
-            )}
-
             <div className="row mb-5">
               <label htmlFor="TwitterConsumerId" className="col-xs-3 text-right">{t('security_setting.clientID')}</label>
               <div className="col-xs-6">

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

@@ -32,7 +32,7 @@ export default class AdminGeneralSecurityContainer extends Container {
       isOidcEnabled: false,
       isBasicEnabled: false,
       isGoogleEnabled: false,
-      isGithubEnabled: false,
+      isGitHubEnabled: false,
       isTwitterEnabled: false,
     };
 
@@ -54,7 +54,7 @@ export default class AdminGeneralSecurityContainer extends Container {
       isOidcEnabled: generalAuth.isOidcEnabled || false,
       isBasicEnabled: generalAuth.isBasicEnabled || false,
       isGoogleEnabled: generalAuth.isGoogleEnabled || false,
-      isGithubEnabled: generalAuth.isGithubEnabled || false,
+      isGitHubEnabled: generalAuth.isGitHubEnabled || false,
       isTwitterEnabled: generalAuth.isTwitterEnabled || false,
     });
   }
@@ -181,9 +181,9 @@ export default class AdminGeneralSecurityContainer extends Container {
   }
 
   /**
-   * Switch GithubOAuth enabled
+   * Switch GutHubOAuth enabled
    */
-  async switchIsGithubOAuthEnabled() {
+  async switchIsGutHubOAuthEnabled() {
     this.switchAuthentication('isGitHubEnabled', 'github');
   }
 

+ 6 - 8
src/client/js/services/AdminGithubSecurityConatainer.js

@@ -6,13 +6,13 @@ import { pathUtils } from 'growi-commons';
 import urljoin from 'url-join';
 
 // eslint-disable-next-line no-unused-vars
-const logger = loggerFactory('growi:security:AdminGithubSecurityContainer');
+const logger = loggerFactory('growi:security:AdminGutHubSecurityContainer');
 
 /**
- * Service container for admin security page (GithubSecurityManagement.jsx)
+ * Service container for admin security page (GutHubSecurityManagement.jsx)
  * @extends {Container} unstated Container
  */
-export default class AdminGithubSecurityContainer extends Container {
+export default class AdminGutHubSecurityContainer extends Container {
 
   constructor(appContainer) {
     super();
@@ -21,7 +21,6 @@ export default class AdminGithubSecurityContainer extends Container {
 
     this.state = {
       appSiteUrl: urljoin(pathUtils.removeTrailingSlash(appContainer.config.crowi.url), '/passport/github/callback'),
-      isGitHubStrategySetup: false,
       githubClientId: '',
       githubClientSecret: '',
       isSameUsernameTreatedAsIdenticalUser: true,
@@ -36,7 +35,6 @@ export default class AdminGithubSecurityContainer extends Container {
     const response = await this.appContainer.apiv3.get('/security-setting/');
     const { githubOAuth } = response.data.securityParams;
     this.setState({
-      isGitHubStrategySetup: githubOAuth.isGitHubStrategySetup,
       githubClientId: githubOAuth.githubClientId || '',
       githubClientSecret: githubOAuth.githubClientSecret || '',
       isSameUsernameTreatedAsIdenticalUser: githubOAuth.isSameUsernameTreatedAsIdenticalUser || false,
@@ -47,20 +45,20 @@ export default class AdminGithubSecurityContainer extends Container {
    * Workaround for the mangling in production build to break constructor.name
    */
   static getClassName() {
-    return 'AdminGithubSecurityContainer';
+    return 'AdminGutHubSecurityContainer';
   }
 
   /**
    * Change githubClientId
    */
-  changeGithubClientId(value) {
+  changeGutHubClientId(value) {
     this.setState({ githubClientId: value });
   }
 
   /**
    * Change githubClientSecret
    */
-  changeGithubClientSecret(value) {
+  changeGutHubClientSecret(value) {
     this.setState({ githubClientSecret: value });
   }
 

+ 0 - 2
src/client/js/services/AdminGoogleSecurityContainer.js

@@ -21,7 +21,6 @@ export default class AdminGoogleSecurityContainer extends Container {
 
     this.state = {
       callbackUrl: urljoin(pathUtils.removeTrailingSlash(appContainer.config.crowi.url), '/passport/google/callback'),
-      isGoogleStrategySetup: false,
       googleClientId: '',
       googleClientSecret: '',
       isSameUsernameTreatedAsIdenticalUser: false,
@@ -37,7 +36,6 @@ export default class AdminGoogleSecurityContainer extends Container {
     const response = await this.appContainer.apiv3.get('/security-setting/');
     const { googleOAuth } = response.data.securityParams;
     this.setState({
-      isGoogleStrategySetup: googleOAuth.isGoogleStrategySetup,
       googleClientId: googleOAuth.googleClientId || '',
       googleClientSecret: googleOAuth.googleClientSecret || '',
       isSameUsernameTreatedAsIdenticalUser: googleOAuth.isSameUsernameTreatedAsIdenticalUser || false,

+ 0 - 2
src/client/js/services/AdminTwitterSecurityContainer.js

@@ -21,7 +21,6 @@ export default class AdminTwitterSecurityContainer extends Container {
 
     this.state = {
       callbackUrl: urljoin(pathUtils.removeTrailingSlash(appContainer.config.crowi.url), '/passport/twitter/callback'),
-      isTwitterStrategySetup: false,
       twitterConsumerKey: '',
       twitterConsumerSecret: '',
       isSameUsernameTreatedAsIdenticalUser: false,
@@ -36,7 +35,6 @@ export default class AdminTwitterSecurityContainer extends Container {
     const response = await this.appContainer.apiv3.get('/security-setting/');
     const { twitterOAuth } = response.data.securityParams;
     this.setState({
-      isTwitterStrategySetup: twitterOAuth.isTwitterStrategySetup,
       twitterConsumerKey: twitterOAuth.twitterConsumerKey || '',
       twitterConsumerSecret: twitterOAuth.twitterConsumerSecret || '',
       isSameUsernameTreatedAsIdenticalUser: twitterOAuth.isSameUsernameTreatedAsIdenticalUser || false,

+ 1 - 1
src/server/routes/apiv3/security-setting.js

@@ -328,7 +328,7 @@ module.exports = (crowi) => {
         isOidcEnabled: await crowi.configManager.getConfig('crowi', 'security:passport-oidc:isEnabled'),
         isBasicEnabled: await crowi.configManager.getConfig('crowi', 'security:passport-basic:isEnabled'),
         isGoogleOAuthEnabled: await crowi.configManager.getConfig('crowi', 'security:passport-google:isEnabled'),
-        isGithubOAuthEnabled: await crowi.configManager.getConfig('crowi', 'security:passport-github:isEnabled'),
+        isGutHubOAuthEnabled: await crowi.configManager.getConfig('crowi', 'security:passport-github:isEnabled'),
         isTwitterOAuthEnabled: await crowi.configManager.getConfig('crowi', 'security:passport-twitter:isEnabled'),
       },
       ldapAuth: {