3

ここでは完全にオフラインかもしれませんが、Meteor の loginWithPassword メソッドを拡張して、プロファイルにいくつかのパラメーターが設定されたリピーターのみを処理できるようにしようとしています。

私はユーザーをうまく作成しています。一度作成すると、そのユーザータイプとしてログインし、すべて問題ありませんが、再度ログインしようとすると壁にぶつかります。

次のように独自のログインハンドラーを実装しようとしました...

Accounts.registerLoginHandler(function(loginRequest) {
console.log("Got to Accounts.registerLoginHandler");
console.log(loginRequest);

var userId = null;

var user = Meteor.loginWithPassword(loginRequest.email, loginRequest.password, function(error){
    if(error !== undefined){       
        setAlert('error', 'Error in processing login. ' + error.reason + '.');
     }
});

var userWithType;
if(user){ // we have the right username and password
    console.log("Found a user and logged them in");
    userWithType = Meteor.users.findOne({'id': user._id, 'profile.type': loginRequest.type});
}


if(userWithType){
   console.log("Found User of that type")
   userId = user._id;
}

console.log("UserId", userId); return { id: ユーザー ID

} });

しかし、このコードに到達するとエラーが発生します

Got to Accounts.registerLoginHandler
{ email: 'blah2@blah', password: 'blha', type: 'user' }
Exception while invoking method 'login' TypeError: Object #<Object> has no method 'loginWithPassword'
    at app/server/login.js:8:23
    at tryAllLoginHandlers (app/packages/accounts-base/accounts_server.js:53:18)
    at Meteor.methods.login (app/packages/accounts-base/accounts_server.js:73:18)
    at maybeAuditArgumentChecks (app/packages/livedata/livedata_server.js:1367:12)
    at _.extend.protocol_handlers.method.exception (app/packages/livedata/livedata_server.js:596:20)
    at _.extend.withValue (app/packages/meteor/dynamics_nodejs.js:31:17)
    at app/packages/livedata/livedata_server.js:595:44
    at _.extend.withValue (app/packages/meteor/dynamics_nodejs.js:31:17)
    at _.extend.protocol_handlers.method (app/packages/livedata/livedata_server.js:594:48)
    at _.extend.processMessage.processNext (app/packages/livedata/livedata_server.js:488:43)

私は明らかに this ポインターまたはそのようなものを欠いていますが、これを機能させようとしても、ここで完全に軌道から外れているかどうかを知るには、このフレームワークについて十分に知りません。

タ P.

4

1 に答える 1

4

私はあまり慣れていませんが、http://docs.meteor.comから、Meteor.loginWithPassword ()クライアントでのみ呼び出すことができます。チュートリアルからサーバー側のコードにそれを書きました。

それはあなたが見るエラーを投げています。クライアントに移動すると、コールバック関数にのみ返されるため、変数userは未定義のままになります。

Meteor.user().profile はクライアントで利用できるので、loginWithPasswordログイン時に情報を確認するために のコールバックでタイプを確認するだけです。

于 2013-07-24T21:30:22.670 に答える