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

+ 6 - 2
src/client/js/components/LoginForm.jsx

@@ -4,6 +4,7 @@ import loggerFactory from '@alias/logger';
 import { withTranslation } from 'react-i18next';
 
 import LoginContainer from '../services/LoginContainer';
+import AppContainer from '../services/AppContainer';
 import { createSubscribedElement } from './UnstatedUtils';
 
 const logger = loggerFactory('growi:loginForm');
@@ -44,7 +45,9 @@ class LoginForm extends React.Component {
   }
 
   handleLoginWithExternalAuth(e) {
-    this.props.loginContainer.loginWithExternalAuth(e.currentTarget.id);
+    const auth = e.currentTarget.id;
+    const csrf = this.props.appContainer.csrfToken;
+    window.location.href = `/passport/${auth}?_csrf=${csrf}`;
   }
 
   renderLocalOrLdapLoginForm() {
@@ -278,13 +281,14 @@ class LoginForm extends React.Component {
  * Wrapper component for using unstated
  */
 const LoginFormWrapper = (props) => {
-  return createSubscribedElement(LoginForm, props, [LoginContainer]);
+  return createSubscribedElement(LoginForm, props, [AppContainer, LoginContainer]);
 };
 
 LoginForm.propTypes = {
   // i18next
   t: PropTypes.func.isRequired,
   loginContainer: PropTypes.instanceOf(LoginContainer).isRequired,
+  appContainer: PropTypes.instanceOf(AppContainer).isRequired,
   isRegistering: PropTypes.bool,
   username: PropTypes.string,
   name: PropTypes.string,

+ 1 - 1
src/client/js/nologin.jsx

@@ -44,7 +44,7 @@ if (loginFormElem) {
 
   ReactDOM.render(
     <I18nextProvider i18n={i18n}>
-      <Provider inject={[loginContainer]}>
+      <Provider inject={[appContainer, loginContainer]}>
         <LoginForm isRegistering={isRegistering} username={username} name={name} email={email} csrf={csrf} />
       </Provider>
     </I18nextProvider>,

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

@@ -60,21 +60,4 @@ export default class LoginForm extends Container {
     }
   }
 
-  async loginWithExternalAuth(auth) {
-    try {
-      const axios = require('axios').create({
-        headers: {
-          'Content-Type': 'application/json',
-          'X-Requested-With': 'XMLHttpRequest',
-        },
-        responseType: 'json',
-      });
-      await axios.get(`/passport/${auth}`, { params: { csrf: this.appContainer.csrfToken } });
-    }
-    catch (err) {
-      logger.error(err);
-      toastError(new Error(`Failed to access ${auth} login page`));
-    }
-  }
-
 }