2016-09-18 13 views
0

私は流星をReact Router,meteor-webpackmeteor-useraccountsで使用しています。 user accounts docからmeteor.startup.jsのリアクタールーター(流星のトップレベル)

私は正常にログインした後に私のユーザーをリダイレクトしたい

:。

var mySubmitFunc = function(error, state){ 
    if (!error) { 
    if (state === "signIn") { 
    // Successfully logged in 
    // ... 
    } 
    if (state === "signUp") { 
    // Successfully registered 
    // ... 
    } 
    } 
}; 

AccountsTemplates.configure({ 
    onSubmitHook: mySubmitFunc 
}); 

AccountsTemplates構成should be called in top-level codeは、このコードはmeteor.startup.jswhen you are using meteor-webpackにする必要があるため。

「成功したログイン」状態でbrowserHistory.push('/some/path')と呼びますが、は、このレベルのリアクションルータにはアクセスしません。

私の可能性はありますか?

答えて

1

起動クライアントフォルダ内には、このようなファイルroutes.jsがあります。

import React from 'react'; 
import { Meteor } from 'meteor/meteor'; 
import { render } from 'react-dom'; 
import { Router, Route, browserHistory, IndexRoute } from 'react-router'; 

import { App } from '../../ui/App'; 
import { NavLayout } from '../../ui/layouts/NavLayout'; 
import { Index } from '../../ui/pages/Index'; 
import { TasksList } from '../../ui/pages/TasksList'; 
import { ReportsList } from '../../ui/pages/ReportsList'; 
import { TechniciansList } from '../../ui/pages/TechniciansList'; 
import { ChangePassword } from '../../ui/pages/ChangePassword'; 

const requireAuth = (nextState, replace) => { 
    if (!Meteor.loggingIn() && !Meteor.userId()) { 
    replace({ 
     pathname: '/logout', 
     state: { nextPathname: nextState.location.pathname }, 
    }); 
    } 
}; 

Meteor.startup(() => { 
    render(
    <Router history={ browserHistory }> 
     <Route path="/" component={ App }> 
     <Route component={ NavLayout }> 
      <IndexRoute component={ Index } onEnter={ requireAuth } /> 
      <Route path="/techniciens" component={ TechniciansList } onEnter={ requireAuth } /> 
      <Route path="/techniciens/:id/edit" component={ EditTechnician } onEnter={ requireAuth } /> 
      <Route path="/clients" component={ ClientsList } onEnter={ requireAuth } /> 
      <Route path="/clients/:id" component={ ClientDetails } onEnter={ requireAuth } /> 
      <Route path="/appareils" component={ MachinesList } onEnter={ requireAuth } /> 
      <Route path="/appareils/:id" component={ MachineDetails } onEnter={ requireAuth } /> 

      <Route path="/change-password" component={ ChangePassword } onEnter={ requireAuth } /> 
     </Route> 

     <Route path="/logout" component={ Connexion } /> 
     </Route> 
    </Router>, 
    document.getElementById('react-root') 
); 
});