2016-09-18 68 views
0

我使用流星React Routermeteor-webpackmeteor-useraccountsReact路由器meteor.startup.js(流星頂級)

我想在成功登錄後,我的用戶重定向

user accounts doc

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') 
); 
});