2016-12-05 5 views
0

Ich habe ein seltsames Problem, Ich erstellte ein Formular, das neue Benutzer in die Datenbank einfügt, und es funktioniert gut.Meteor - Hinzufügen neuer Benutzer, ändert den angemeldeten Benutzer

Das Problem ist jetzt, wenn ich mit "Alex" account eingeloggt bin, und ich Leonard zur Datenbank hinzugefügt habe, Leonard wird erfolgreich hinzugefügt, und der angemeldete Benutzer wird von Alex zu Leonard wechseln.

Wie verhindere ich diese Änderung?

UPDATE:

Hier ist mein Code:

Template.addingUser.events({ 
    'submit #addUser': function (e, t) { 

     e.preventDefault(); 

     Session.set('name', t.find('#name').value); 
     Session.set('email', t.find('#email').value); 
     Session.set('homeAddress', t.find('#homeAddress').value); 
     Session.set('pass', t.find('#pass').value); 


     Session.set('taxNo', t.find('#taxNo').value); 


     let userId = Accounts.createUser({ 
      username: Session.get('name'), 
      password: Session.get('pass'), 
      email: Session.get('email'), 
      profile: { 
      homeAddress: Session.get('homeAddress'), 
     } 

     }, function (err) { 
      if (err) 
       console.log(err); 
      else 
       console.log('It worked...'); 
     }); 
    } 
}); 

UPDATE 1.1

Ich versuchte Accounts.onCreateUser Funktion zu verwenden. Der Benutzer wurde erfolgreich hinzugefügt, aber der aktuell angemeldete Benutzer wird nach dem Hinzufügen abgemeldet.

hier ist mein Code:

Auftraggeber:

var options = { 
      username: t.find('#name').value, 
      password: t.find('#pass').value, 
      email: t.find('#email').value, 
      profile: { 
       homeAddress: t.find('#homeAddress').value, 
      } 
     }; 
     Meteor.call('createUser', options); 

Server:

Meteor.methods({ 
    employeeAddition: function(options){ 
     Accounts.onCreateUser(function(options, user) { 
      if (options.profile) 
       user.profile = options.profile; 
     }); 
     var userId = Accounts.createUser(); 
    }, 
}); 

Wie kann ich den aktuellen Benutzer von abzumelden nach neuen Benutzer verhindern, hinzugefügt werden?

+0

zeigen Sie den Code Sie den neuen Benutzer hinzuzufügen, verwenden. –

+0

@MichelFloyd Ich aktualisierte die Frage :) –

Antwort

1

Sie legen den Namen, die E-Mail-Adresse, die Home-Adresse und die Sitzung fest. Wenn Sie mit Session.get ('name') Ihren angemeldeten Benutzer steuern, erklären Sie, warum der angemeldete Benutzer aktualisiert wurde.

Versuchen Sie, dort keine Werte für die Sitzung festzulegen. Ich verstehe den Sinn nicht.

Hoffe, dass Hilfe.

+0

yeah Ihr Recht, Ich modifiziere den Code jetzt, hoffe, es wird funktionieren, wird Sie in einem Moment aktualisieren. Danke –

+0

der Code sieht besser aus und viel weniger, danke. das Problem bleibt immer noch tho -_- –

1

Accounts.createUser Benutzer wird automatisch nach der Anmeldung erfolgreich angemeldet, und es scheint zu sein gibt es keine Optionen von Meteor zur Verfügung gestellt, um es auszuschalten. So müssten Sie createdUser selbst nennen, das verhindern:

Meteor.call('createUser', { 
    username: Session.get('name'), 
    password: Accounts._hashPassword(Session.get('pass')), 
    email: Session.get('email'), // you have to hash the password 
    profile: { 
    homeAddress: Session.get('homeAddress'), 
    }, 
}, function(err, re) { 
    // ... 
}) 
+0

danke, ich upvoted Sie, diese Lösung half nicht bei der Anmeldung des neuen Benutzers, aber der aktuelle Benutzer wird ausgelogged -_- –

2

Es ist, weil Sie Accounts.createUser() auf dem Client anstelle des Server sind aufgerufen wird.

Vom docs

auf dem Client protokolliert diese Funktion in wie der neu erstellte Benutzer auf erfolgreichen Abschluss. Auf dem Server wird die neu erstellte Benutzer-ID zurückgegeben.

Sie benötigen einen Server Methode hinzufügen, in dem Sie Accounts.createuser()

+0

Ich bin die Implementierung der Lösung jetzt, werde zurück zu Ihnen in Einen Moment, Danke :) –

0

Mit Accounts.onCreateUser löste es für mich

-Client aufrufen: Ich übergeben Optionen der Methode

var options = { 
      username: t.find('#name').value, 
      password: t.find('#pass').value, 
      email: t.find('#email').value, 
      profile: { 
       homeAddress: t.find('#homeAddress').value, 

      } 
     }; 

     Meteor.call('employeeAddition', options); 

Dann, in dem Ich habe Accounts.createUser und Accounts.onCreateUser aufgerufen. Wie es in ihrer docs erwähnt wird.

Standardmäßig wird die Profiloption direkt dem neuen Benutzerdokument hinzugefügt. Verwenden Sie Accounts.onCreateUser, um dieses Verhalten zu überschreiben. Hier

ist der Code:

Server:

Meteor.methods({ 
    employeeAddition: function(options){ 

     Accounts.createUser(options); 

     Accounts.onCreateUser(function(options, user) { 
      if (options.profile) 
       user.profile = options.profile; 
     }); 
    }, 
}); 
Verwandte Themen