2016-08-12 2 views
0

Wenn ein Benutzer ein Profil erstellt sie eine Wahl zwischen zwei Benutzer Entscheidungen gegeben werden, dass das Objekt ihrem Benutzerprofil Sinn so etwas wie aussehen:Routen Benutzer nach dem Einschalten Profilparameter basierten Login

{ 
    name: "Jane Doe", 
    userType: "user-A" 
} 

Was ich möchte, Zu tun ist, eine Umleitung einzurichten, wo, wenn sich ein Benutzer anmeldet, er prüft, um welche Art von Benutzer es sich handelt, und sie auf eine Seite umleiten.

Wenn ein usertype = user-A, werden sie auf localhost gehen: 3000/user-A
Wenn ein usertype = user-B, sie zu localhost gehen: 3000/user-B

Ich bin zur Zeit mit Eisen Router für meine Routen und Konten-Passwort für Konten

ich folgende auf der Client-Seite versucht habe, aber es ist Ausdruck von null

Template.login.events({ 
    'submit #at-pwd-form': function() { 
     console.log(Meteor.userId()); 
    } 
}); 

Edit 1

Versuchte auch mit dem folgenden Code das von der Server-Seite zu tun, aber ich bin immer Eisen Router Fehler:

Accounts.onLogin(function() { 
    var pathToProfile = "/" + Meteor.user().profile.userType; 
    console.log(pathToProfile); // Proof that variable is being saved properly 
    Router.go(pathToProfile); 
}); 

Fehler:

I20160811-22:58:28.560(-4)? Exception in onLogin callback: TypeError: Object function router(req, res, next) { 
I20160811-22:58:28.560(-4)?  //XXX this assumes no other routers on the parent stack which we should probably fix 
I20160811-22:58:28.560(-4)?  router.dispatch(req.url, { 
I20160811-22:58:28.560(-4)?  request: req, 
I20160811-22:58:28.561(-4)?  response: res 
I20160811-22:58:28.561(-4)?  }, next); 
I20160811-22:58:28.561(-4)? } has no method 'go' 
I20160811-22:58:28.561(-4)?  at server/main.js:13:10 
I20160811-22:58:28.561(-4)?  at runAndHandleExceptions (packages/callback-hook/hook.js:133:1) 
I20160811-22:58:28.561(-4)?  at packages/callback-hook/hook.js:140:1 
I20160811-22:58:28.562(-4)?  at packages/accounts-base/accounts_server.js:167:5 
I20160811-22:58:28.562(-4)?  at [object Object]._.extend.each (packages/callback-hook/hook.js:109:1) 
I20160811-22:58:28.562(-4)?  at AccountsServer.Ap._successfulLogin (packages/accounts-base/accounts_server.js:166:21) 
I20160811-22:58:28.562(-4)?  at AccountsServer.Ap._attemptLogin (packages/accounts-base/accounts_server.js:355:10) 
I20160811-22:58:28.562(-4)?  at [object Object].methods.login (packages/accounts-base/accounts_server.js:532:21) 
I20160811-22:58:28.562(-4)?  at maybeAuditArgumentChecks (packages/ddp-server/livedata_server.js:1704:12) 
I20160811-22:58:28.563(-4)?  at packages/ddp-server/livedata_server.js:711:19 
+0

Ich bin nicht vertraut mit dem Framework, das Sie verwenden, aber auf der Client-Seite können Sie die 'locatio einstellen n'-Objekt, während auf der Serverseite ein 'Location'-Header mit einer 302 HTTP-Antwort (temporäre Weiterleitung) gesendet werden kann – rvighne

+0

Wenn Sie null erhalten, bedeutet dies, dass kein Benutzer angemeldet ist. [Meter.userId()] (https://docs.meteor.com/api/accounts.html#Meteor-userId) – Zesky

+0

@Zesky Recht, das ist, was ich versuche herauszufinden. Ich möchte nach der Anmeldung eines Benutzers herausfinden, um welchen Benutzertyp es sich handelt, und diese auf eine bestimmte Seite umleiten. –

Antwort

1

Sie onSubmitHook in AccountsTemplates.configure() können

//code goes to lib folder, shared code between client & server 
onSubmitHook: function onSubmitHook(error, state) { 
    if (!error) { 
     if (state === 'signIn') { 
      var user = Meteor.user(); 
      if (user.userType == "user-A") { 
       Router.go('/user-A'); 
      } else { 
       Router.go('/user-B'); 
      } 
     } 
    } 
} 
Verwandte Themen