1

我正在構建一個應用程序,其中人們無法自己創建他們的帳戶,但第一個用戶創建(我)可以在應用程序中的窗體中創建用戶。流星:Accounts.createUser()不創建用戶

這就是爲什麼我在/lib/config/account.js設置好的:forbidClientAccountCreation: true,

我的問題是,我不能在我的表單中創建用戶時,我登錄。(即使我設置這個選項。以上 假這裏是我的代碼:

userAdd.js:

Template.userAdd.events({ 
'submit .new-user': function(event) { 
    event.preventDefault(); 

    var email = $('input[name="email"]').val();; 
    var username = $('input[name="username"]').val();; 

    Accounts.createUser({ 
     email: email, 
     username: username, 
     password: 'toto', 
     profile: { 

     } 
    }); 

    event.target.email.value = ""; 
    event.target.username.value = ""; 
} 
}); 

/server/publications/user.js:

Meteor.publish('users', function() { 
    return Meteor.users.find(); 
}) 

Meteor.users.allow({ 
    'insert': function (userId, doc) { 
    return true; 
    } 
}); 

我的用戶名單,我顯示的用戶列表:

Meteor.subscribe('users'); 

Template.usersList.helpers({ 
    users: function() { 
    return Meteor.users.find(); 
    } 
}); 

我也試圖與Meteor.users.insert()但它並沒有太多工作..

你能幫助我嗎?


新增的路線:

FlowRouter.route('/users', { 
name: "users", 
action: function() { 
    BlazeLayout.render('applicationLayout', { 
     menu: 'menu', 
     container: 'usersList' 
    }); 
} 
}); 

AccountsTemplates.configureRoute('changePwd'); 
AccountsTemplates.configureRoute('forgotPwd'); 
AccountsTemplates.configureRoute('resetPwd'); 
AccountsTemplates.configureRoute('signIn'); 

AddUser.html

<template name="userAdd"> 
    <form class="ui form new-user"> 
    <div class="inline fields"> 
     <div class="seven wide field"> 
      <label>Email</label> 
      <input type="text" name="email" placeholder="Email"> 
     </div> 
     <div class="seven wide field"> 
      <label>Username</label> 
      <input type="text" name="username" placeholder="Username"> 
     </div> 
     <button class="ui button icon right labeled teal" type="submit" name="submit"><i class="right checkmark icon"></i>Valider</button> 
    </div> 
    </form> 
</template> 

user.js的

Template.tableUser.helpers({ 
    email: function() { 
    return this.emails[0].address; 
    } 
}); 

.Packages

insecure    # Allow all DB writes from clients (for prototyping) 
kadira:flow-router 
semantic:ui 
flemay:less-autoprefixer 
underscore 
kadira:blaze-layout 
arillo:flow-router-helpers 
zimme:active-route 
aldeed:collection2 
accounts-password 
useraccounts:flow-routing 
useraccounts:semantic-ui 
accounts-base 

這些都與帳戶有關...

+0

服務器中的任何錯誤終端或瀏覽器控制檯? – Sasikanth

+0

沒有這個問題...在服務器上沒有任何錯誤。當我輸入:db.users.find();在Meteor Mongo上,我只創建了我的第一個用戶,而不是新的用戶...... – guillaumek

+0

如果您從'流星外殼'創建帳戶,會發生什麼? – Sasikanth

回答

2

謝謝@JeremyK和@Sasikanth! 它現在工作,

我改變了我的代碼到服務器端。不知道是不是所有的是完美的,但這裏是工作代碼:

addUser.js:

Meteor.subscribe('users'); 

Template.userAdd.events({ 
'submit .new-user': function(event) { 
    event.preventDefault(); 

    var email = $('input[name="email"]').val(); 
    var password = $('input[name="password"]').val(); 
    var firstname = $('input[name="firstname"]').val(); 
    var lastname = $('input[name="lastname"]').val(); 

    Meteor.call("createUsers", email, password, firstname, lastname); 

    event.target.email.value = ""; 
    event.target.password.value = ""; 
    event.target.firstname.value = ""; 
    event.target.lastname.value = ""; 
} 
}); 

/server/methods/user.js

Meteor.methods({ 
createUsers: function(email, password, firstname, lastname) { 
    Accounts.createUser({ 
     password: password, 
     username: firstname + ' ' + lastname, 
     email: email, 
     createdAt: new Date(), 
    }); 
}, 

deleteUser : function(id){ 
    return Meteor.users.remove(id); 
}, 
}); 

user.js的

Template.tableUser.events({ 
    "click .delete": function() { 
    var idUser= this._id; 
    Meteor.call('deleteUser',{_id:idUser}) 
    } 
}); 

非常感謝:)