2011-04-28 2 views
2

지금 mongoose-auth의 Facebook Connect를 사용하고 있습니다. 모든 것이 잘 작동하고 사용자는 mongodb 서버를 통해 작성/로그인됩니다.Mongoose-auth를 사용하는 사람이 있습니까? findOrCreateUsers를 어떻게 오버 라이드합니까?

그러나 새 사용자에게 가입시 임의의 "코드"를 할당하고 db.users 프로필에 넣기 때문에 findOrCreateUsers를 오버라이드하고 싶습니다.

그래서 mongoose-auth/lib/facebook을 조사한 결과 3 개의 facebook 모듈 파일을 내 디렉토리 [everyauth.js, index.js, schema.js]에 복사했습니다. 간단한 테스트를 실행하기 위해 필자는 기본적으로 필자의 모든 autauth.js를 내 디렉토리에 포함 시켰고, 기본이 아닌 findOrCreateUsers 메소드를 사용했습니다.

작동하지만 오류가 하나 있습니다. 로그인/사용자 생성 후 req.user은 정의되지 않습니다. (req.loggedIn가 참, 예!)

나는 이것이 새로운 라이브러리라는 것을 알고 있지만, 그것을 사용했다면 (또는 Node.js에 대해 많이 알고 있다면) 도움을 주시면 감사하겠습니다. 나는 irc.freenode.net의 # node.js에 있습니다. 닉네임은 "xeodox"입니다. 네가 나를 도울 수 있다면 정말 고마워 !!

나는 나의 app.js에 페이스 북의 모듈에이 작업을 수행하여 findOrCreateUser를 오버라이드하지 :

findOrCreateUser: function (sess, accessTok, accessTokExtra, fbUser) { 
    var promise = new Promise() 
     , self = this; 
    // TODO Check user in session or request helper first 
    //  e.g., req.user or sess.auth.userId 
    this.User()().findOne({'fb.id': fbUser.id}, function (err, foundUser) { 
     if (foundUser) 
     return promise.fulfill(foundUser); 
     self.User()().createWithFB(fbUser, accessTok, accessTokExtra.expires, function (err, createdUser) { 
     return promise.fulfill(createdUser); 
     }); 
    }); 
    return promise; 
    } 

답변

3

자신의 디렉토리에 그 파일을 복사 할 필요가 있습니다.

facebook: { 
    everyauth: { 
     myHostname: 'http://localhost:3000' 
    , appId: 'YOUR APP ID HERE' 
    , appSecret: 'YOUR APP SECRET HERE' 
    , redirectPath: '/home' 
    , findOrCreateUser: function (session, accessToken, fbUserMetadata) { 
     } 
    } 
} 

가 정의되지 않은 req.user에 도움이 필요한 경우, 독립적 인에 gist을 다시 만드는 문제에 대한 링크 GitHub의상의 issue 파일, 내가 도움이 될 수 있습니다 : 그냥 당신의 몽구스 - 인증 구성에서 다음을 수행 너나가.

관련 문제