Hey guys I am trying to make a custom registration form with the accounts-password package but i get an error in the console : Error invoking Method 'insertUser': Internal server error [500]
and on the server side :
=> Meteor server restarted
I20170209-20:25:53.029(1)? Exception while invoking method 'insertUser' ReferenceError: password is not defined
This is my client side code :
Template.Anmeldung.events({
"submit .add-benutzer": function(event){
var Vorname = event.target.Vorname.value;
var Nachname = event.target.Nachname.value;
var Geburtsdatum = event.target.Geburtsdatum.value;
var Email = event.target.Email.value;
var Passwort = event.target.Passwort.value;
Meteor.call('addBenutzer', Vorname, Nachname, Geburtsdatum, Vorname)
Meteor.call('insertUser', Email, Passwort);
event.target.Vorname.value = "";
event.target.Nachname.value = "";
event.target.Geburtsdatum.value = "";
event.target.Email.value = "";
event.target.Passwort.value = "";
FlowRouter.go('/meineEvents');
return false;
}
});
and my server side code :
Meteor.methods({
insertUser(emailVar, paswordVar){
Accounts.createUser(emailVar, passwordVar);
}
});
Thank you for every help ;)
It is just that you use the Accounts.createUser
wrong, it should be this:
Meteor.methods({
insertUser(emailVar, paswordVar){
Accounts.createUser({
email: emailVar,
password: passwordVar
});
}
});
You don't need to call Accounts.createUser
on the server in a Meteor method. In fact, doing so is dangerous because you are passing the password from the client to the server without encrypting it.
I recommend you read the docs for the functions you use: Link
In this case you can just use do
Template.Anmeldung.events({
"submit .add-benutzer": function(event){
var Vorname = event.target.Vorname.value;
var Nachname = event.target.Nachname.value;
var Geburtsdatum = event.target.Geburtsdatum.value;
var Email = event.target.Email.value;
var Passwort = event.target.Passwort.value;
Meteor.call('addBenutzer', Vorname, Nachname, Geburtsdatum, Vorname)
Accounts.createUser({ email: Email, password: Passwort} , (error) => {
if(error) {
alert(error.reason);
}
});
[...]
}
});
As a side note, in some cases you need to create a user on the server. In these cases you can use the Accounts._hashPassword()
on the client before sending the password to the server. This ensures the password isn't sent in plain text.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.