Просмотр исходного кода

delete to getting data from login api v3

yusuketk 6 лет назад
Родитель
Сommit
ad05a4b667

+ 30 - 32
src/client/js/components/LoginForm.jsx

@@ -1,13 +1,10 @@
 import React from 'react';
 import PropTypes from 'prop-types';
-import loggerFactory from '@alias/logger';
 import { withTranslation } from 'react-i18next';
 
 import LoginContainer from '../services/LoginContainer';
 import { createSubscribedElement } from './UnstatedUtils';
 
-const logger = loggerFactory('growi:loginForm');
-
 class LoginForm extends React.Component {
 
   constructor(props) {
@@ -20,18 +17,6 @@ class LoginForm extends React.Component {
     this.renderRegisterForm = this.renderRegisterForm.bind(this);
   }
 
-  async componentDidMount() {
-    const { loginContainer } = this.props;
-
-    try {
-      await loginContainer.retrieveData();
-    }
-    catch (err) {
-      loginContainer.setState({ retrieveError: err.message });
-      logger.error(err);
-    }
-  }
-
   // for flip [TODO][GW-1865] use state or react component for flip
   switchForm(e) {
     if (e.target.id === 'register') {
@@ -43,7 +28,7 @@ class LoginForm extends React.Component {
   }
 
   renderLocalOrLdapLoginForm() {
-    const { t, csrf } = this.props;
+    const { t, csrf, isLdapStrategySetup } = this.props;
 
     return (
       <form role="form" action="/login" method="post">
@@ -54,7 +39,7 @@ class LoginForm extends React.Component {
             </span>
           </div>
           <input type="text" className="form-control" placeholder="Username or E-mail" name="loginForm[username]" />
-          {this.isLdapStrategySetup && (
+          {isLdapStrategySetup && (
             <div className="input-group-append">
               <small className="input-group-text text-success">
                 <i className="icon-fw icon-check"></i> LDAP
@@ -73,7 +58,7 @@ class LoginForm extends React.Component {
         </div>
 
         <div className="input-group justify-content-center d-flex mt-5">
-          {/* [TODO][GW-1913] An AppContainer gets csrf data */}
+          {/* [TODO][GW-2112] An AppContainer gets csrf data */}
           <input type="hidden" name="_csrf" value={csrf} />
           <button type="submit" id="login" className="btn btn-fill login px-0 py-2">
             <div className="eff"></div>
@@ -109,8 +94,8 @@ class LoginForm extends React.Component {
   }
 
   renderExternalAuthLoginForm() {
-    const { loginContainer } = this.props;
-    const isExternalAuthCollapsible = loginContainer.state.isLocalStrategySetup || loginContainer.state.isLdapStrategySetup;
+    const { isLocalStrategySetup, isLdapStrategySetup, objOfIsExternalAuthEnableds } = this.props;
+    const isExternalAuthCollapsible = isLocalStrategySetup || isLdapStrategySetup;
     const collapsibleClass = isExternalAuthCollapsible ? 'collapse collapse-external-auth collapse-anchor' : '';
 
     return (
@@ -119,8 +104,8 @@ class LoginForm extends React.Component {
         <div id="external-auth" className={`external-auth ${collapsibleClass}`}>
           <div className="spacer"></div>
           <div className="d-flex flex-row justify-content-between flex-wrap">
-            {Object.keys(loginContainer.state.objOfIsExternalAuthEnableds).map((auth) => {
-              if (!loginContainer.state.objOfIsExternalAuthEnableds[auth]) {
+            {Object.keys(objOfIsExternalAuthEnableds).map((auth) => {
+              if (!objOfIsExternalAuthEnableds[auth]) {
                 return;
               }
               return this.renderExternalAuthInput(auth);
@@ -146,10 +131,10 @@ class LoginForm extends React.Component {
   }
 
   renderRegisterForm() {
-    const { t, loginContainer, csrf } = this.props;
+    const { t, csrf, registrationMode, registrationWhiteList } = this.props;
     return (
       <div className="back">
-        {this.registrationMode === 'Restricted' && (
+        {registrationMode === 'Restricted' && (
           <p className="alert alert-warning">
             {t('page_register.notice.restricted')}
             <br />
@@ -187,11 +172,11 @@ class LoginForm extends React.Component {
             <input type="email" className="form-control" placeholder={t('Email')} name="registerForm[email]" defaultValue={this.props.email} required />
           </div>
 
-          {loginContainer.state.registrationWhiteList.length > 0 && (
+          {registrationWhiteList.length > 0 && (
             <>
               <p className="form-text">{t('page_register.form_help.email')}</p>
               <ul>
-                {loginContainer.state.registrationWhiteList.map((elem) => {
+                {registrationWhiteList.map((elem) => {
                   return (
                     <li key={elem}>
                       <code>{elem}</code>
@@ -212,7 +197,7 @@ class LoginForm extends React.Component {
           </div>
 
           <div className="input-group justify-content-center mt-5">
-            {/* [TODO][GW-1913] An AppContainer gets csrf data */}
+            {/* [TODO][GW-2112] An AppContainer gets csrf data */}
             <input type="hidden" name="_csrf" value={csrf} />
             <button type="submit" className="btn btn-fill px-0 py-2" id="register">
               <div className="eff"></div>
@@ -239,11 +224,18 @@ class LoginForm extends React.Component {
   }
 
   render() {
-    const { t, loginContainer, isRegistering } = this.props;
+    const {
+      t,
+      isRegistering,
+      isLocalStrategySetup,
+      isLdapStrategySetup,
+      isRegistrationEnabled,
+      objOfIsExternalAuthEnableds,
+    } = this.props;
 
-    const isLocalOrLdapStrategiesEnabled = loginContainer.state.isLocalStrategySetup || loginContainer.state.isLdapStrategySetup;
+    const isLocalOrLdapStrategiesEnabled = isLocalStrategySetup || isLdapStrategySetup;
     const registerFormClass = isRegistering ? 'to-flip' : '';
-    const isSomeExternalAuthEnabled = Object.values(loginContainer.state.objOfIsExternalAuthEnableds).some(elem => elem);
+    const isSomeExternalAuthEnabled = Object.values(objOfIsExternalAuthEnableds).some(elem => elem);
 
     return (
       <div className={`login-dialog mx-auto flipper ${registerFormClass}`} id="login-dialog">
@@ -252,7 +244,7 @@ class LoginForm extends React.Component {
             <div className="front">
               {isLocalOrLdapStrategiesEnabled && this.renderLocalOrLdapLoginForm()}
               {isSomeExternalAuthEnabled && this.renderExternalAuthLoginForm()}
-              {loginContainer.state.isRegistrationEnabled && (
+              {isRegistrationEnabled && (
                 <div className="row">
                   <div className="col-12 text-right py-2">
                     <a href="#register" id="register" className="link-switch" onClick={this.switchForm}>
@@ -262,7 +254,7 @@ class LoginForm extends React.Component {
                 </div>
               )}
             </div>
-            {loginContainer.state.isRegistrationEnabled && this.renderRegisterForm()}
+            {isRegistrationEnabled && this.renderRegisterForm()}
             <a href="https://growi.org" className="link-growi-org pl-3">
               <span className="growi">GROWI</span>.<span className="org">ORG</span>
             </a>
@@ -290,6 +282,12 @@ LoginForm.propTypes = {
   name: PropTypes.string,
   email: PropTypes.string,
   csrf: PropTypes.string,
+  isRegistrationEnabled: PropTypes.bool,
+  registrationMode: PropTypes.string,
+  registrationWhiteList: PropTypes.array,
+  isLocalStrategySetup: PropTypes.bool,
+  isLdapStrategySetup: PropTypes.bool,
+  objOfIsExternalAuthEnableds: PropTypes.object,
 };
 
 export default withTranslation()(LoginFormWrapper);

+ 0 - 41
src/client/js/services/LoginContainer.js

@@ -1,11 +1,5 @@
 import { Container } from 'unstated';
 
-import loggerFactory from '@alias/logger';
-
-import { toastError } from '../util/apiNotification';
-
-const logger = loggerFactory('growi:loginForm');
-
 /**
  * Service container for login form (LoginForm.jsx)
  * @extends {Container} unstated Container
@@ -16,18 +10,6 @@ export default class LoginForm extends Container {
     super();
 
     this.appContainer = appContainer;
-
-    this.state = {
-      retrieveError: null,
-      isRegistrationEnabled: false,
-      registrationMode: 'Closed',
-      registrationWhiteList: [],
-      isLocalStrategySetup: false,
-      isLdapStrategySetup: false,
-      objOfIsExternalAuthEnableds: {},
-    };
-
-    this.retrieveData = this.retrieveData.bind(this);
   }
 
   /**
@@ -37,27 +19,4 @@ export default class LoginForm extends Container {
     return 'LoginContainer';
   }
 
-  /**
-   * retrieve app sttings data
-   */
-  async retrieveData() {
-    try {
-      const response = await this.appContainer.apiv3.get('/login/');
-      const { data } = response.data;
-
-      this.setState({
-        isRegistrationEnabled: data.isRegistrationEnabled,
-        registrationMode: data.registrationMode,
-        registrationWhiteList: data.registrationWhiteList,
-        isLocalStrategySetup: data.isLocalStrategySetup,
-        isLdapStrategySetup: data.isLdapStrategySetup,
-        objOfIsExternalAuthEnableds: data.objOfIsExternalAuthEnableds,
-      });
-    }
-    catch (err) {
-      logger.error(err);
-      toastError(new Error('Failed to fetch data'));
-    }
-  }
-
 }

+ 0 - 2
src/server/routes/apiv3/index.js

@@ -13,8 +13,6 @@ module.exports = (crowi) => {
 
   router.use('/healthcheck', require('./healthcheck')(crowi));
 
-  router.use('/login', require('./login')(crowi));
-
   // admin
   router.use('/admin-home', require('./admin-home')(crowi));
   router.use('/markdown-setting', require('./markdown-setting')(crowi));

+ 0 - 63
src/server/routes/apiv3/login.js

@@ -1,63 +0,0 @@
-const loggerFactory = require('@alias/logger');
-
-const logger = loggerFactory('growi:routes:apiv3:login'); // eslint-disable-line no-unused-vars
-
-const express = require('express');
-
-const router = express.Router();
-
-/**
- * @swagger
- *  tags:
- *    name: logins
- */
-
-module.exports = (crowi) => {
-  const accessTokenParser = require('../../middleware/access-token-parser')(crowi);
-  const { passportService, configManager } = crowi;
-  /**
-   * @swagger
-   *
-   *    /login:
-   *      get:
-   *        summary: /login
-   *        description: Get data for rendering login form
-   *        responses:
-   *          200:
-   *            description: Succeeded to get data for rendering login form.
-   *            content:
-   *              application/json:
-   *                schema:
-   *                  properties:
-   *                    data:
-   *                      type: object
-   *                      description: data for rendering login form
-   */
-  router.get('/', accessTokenParser, async(req, res) => {
-    const data = {};
-    try {
-      data.isRegistrationEnabled = passportService.isLocalStrategySetup
-        && await configManager.getConfig('crowi', 'security:registrationMode') !== 'Closed';
-      data.registrationMode = await configManager.getConfig('crowi', 'security:registrationMode');
-      data.registrationWhiteList = await configManager.getConfig('crowi', 'security:registrationWhiteList');
-      data.isLocalStrategySetup = passportService.isLocalStrategySetup;
-      data.isLdapStrategySetup = passportService.isLdapStrategySetup;
-      data.objOfIsExternalAuthEnableds = {
-        google: configManager.getConfig('crowi', 'security:passport-google:isEnabled'),
-        github: configManager.getConfig('crowi', 'security:passport-github:isEnabled'),
-        facebook: configManager.getConfig('crowi', 'security:passport-facebook:isEnabled'),
-        twitter: configManager.getConfig('crowi', 'security:passport-twitter:isEnabled'),
-        oidc: configManager.getConfig('crowi', 'security:passport-oidc:isEnabled'),
-        saml: configManager.getConfig('crowi', 'security:passport-saml:isEnabled'),
-        basic: configManager.getConfig('crowi', 'security:passport-basic:isEnabled'),
-      };
-      return res.apiv3({ data });
-    }
-    catch (err) {
-      logger.error('get-auth-setting-data-failed', err);
-      return res.apiv3Err(err, 500);
-    }
-  });
-
-  return router;
-};