新しい Meteor auth ブランチでは、サーバー側でユーザーを作成するにはどうすればよいですか?
への呼び出しでそれらをクライアント側で作成する方法がわかります
[Client] Meteor.createUser(options, extra, callback)
しかし、起動時に Meteor ユーザー コレクション レコードを作成したいとします。
たとえば、アプリケーションの起動/ブートストラップ中の管理者アカウント?
ありがとうスティーブ
新しい Meteor auth ブランチでは、サーバー側でユーザーを作成するにはどうすればよいですか?
への呼び出しでそれらをクライアント側で作成する方法がわかります
[Client] Meteor.createUser(options, extra, callback)
しかし、起動時に Meteor ユーザー コレクション レコードを作成したいとします。
たとえば、アプリケーションの起動/ブートストラップ中の管理者アカウント?
ありがとうスティーブ
meteor の新しいバージョンの使用について
Accounts.createUser({
username: username,
email : email,
password : password,
profile : {
//publicly visible fields like firstname goes here
}
});
注: パスワード ハッシュは自動的に生成されます
meteor の古いバージョンでは、次のように使用します。
1 - 注意:必要なパッケージがインストールされていますか?
meteor の一部のバージョンでは、Steeve が提案したように SRP パスワードソルトジェネレーターを呼び出すことができないため、これを試してください:
2 - Meteor.users.insert( ) を実行します
例えば
var newUserId =
Meteor.users.insert({
emails: ['peter@jones.com'],
profile : { fullname : 'peter' }
});
注: ユーザーは、ユーザー名または電子メール アドレスのいずれかを持っている必要があります。この例では電子メールを使用しました。
3 - 最後に、新しく作成したアカウントのパスワードを設定します。
Accounts.setPassword(newUserId, 'newPassword');
今のところ、これは meteor-core google グループで提案されています。
Meteor.users.insert({username: 'foo', emails: ['bar@example.com'], name: 'baz', services: {password: {srp: Meteor._srp.generateVerifier('password')}}});
できます。起動/ブートストラップ中にテストしました。
私はこれを永続的または長期的な答えとは考えていません。なぜなら、auth ブランチはまだ大きな変化の中にあると信じており、Meteor の背後にあるチームが何らかの機能を提供すると思うからです。
したがって、長期的な答えとしてこれに依存しないでください。
スティーブ
おそらく今ではよく知られている事実ですが、これを完了するために、auth
ブランチでこれを行うための新しいサーバー API があります。authのドキュメントから:
" [Server] Meteor.createUser(options, extra) - ユーザーを作成し、初期パスワードを選択してアカウント登録を完了するためのリンクが記載された電子メールをそのユーザーに送信します
options 以下を含むハッシュ: email (必須)、username (オプション) extra: ユーザー オブジェクトの追加フィールド (名前など)。"
API は master ブランチにはまだないため、変更される可能性があることに注意してください。
現時点では、あなたにはできないと思います。ランニング
Meteor.call('createUser', {username: "foo", password: "bar"});
近いですが、 in の実装はcreateUser
成功時のpasswords_server.js
呼び出しであり、クライアントが開始したメソッド呼び出しでない限り、サーバーで呼び出すことはできません ( .this.setUserId
setUserId
livedata_server.js
これはサポートする価値があるように思えます。おそらく、createUser
ユーザーをログインさせる の最後の 3 行は、login
メソッドの新しいブール値オプションによって制御する必要がありますか? 次に、使用できます
Meteor.call('createUser', {username: "foo", password: "bar", login: false});
サーバーのブートストラップ コードで。
サーバー側からユーザーを作成する
// Server method
Meteor.methods({
register: function(data) {
try {
console.log("Register User");
console.log(data);
user = Accounts.createUser({
username: data.email,
email: data.email,
password: data.password,
profile: {
name: data.email,
createdOn: new Date(),
IsInternal: 0
}
});
return {
"userId": user
};
} catch (e) {
// IF ALREADY EXSIST THROW EXPECTION 403
throw e;
}
}
});
// Client call method
Meteor.call('register',{email: "vxxxxx@xxxx.com",password: "123456"}, function(error, result){
if(result){
console.log(result)
}
if(error){
console.log(result)
}
});
Meteor バージョン 1.1.0.2 (サーバー側) の作業用の coffeescript の例:
userId = Accounts.createUser
username: 'user'
email: 'user@company.com'
password: 'password'
profile:
name: 'user name'
user = Meteor.users.findOne userId
profile.name をに追加してoptions
例外が消える前に、この API が作業コードで「ユーザーは既に存在します」という例外を取得するのにしばらく苦労しました。