Я пытаюсь использовать everyauth
в express
для аутентификации пользователей на веб-сайте, который позволяет добавлять текстовые комментарии к изображениям.В настоящее время я использую api twitter oauth для аутентификации своих пользователей.
Теперь я пытаюсь создать пользовательскую базу данных, которая позволяет мне поддерживать несколько способов входа в систему, связанных с одной записью в CouchDB.У меня возникают проблемы, когда я хочу добавить нового пользователя в БД, когда он изначально подключается через твиттер.Код моего findUserById
выглядит следующим образом:
everyauth.everymodule.findUserById (userId, callback) ->
users.findById userId, (err,res) ->
if res.id
# id returned, so there is an entry in the DB
callback null, res
else
# no entry in the DB, add a new one
users.saveById JSON.stringify(userId), {"name":"test"}, (saveErr, saveRes) ->
callback null, saveRes
everyauth.twitter
.consumerKey(config.twitterConsumerKey)
.consumerSecret(config.twitterConsumerSecret)
.findOrCreateUser((session, token, secret, user) ->
promise = @.Promise().fulfill user
).redirectPath '/'
findById
и saveById
являются методами объекта cradle
, который запрашивает БД, userId
предоставляется Everyauth, так каккажется.
Моя проблема заключается в части {"name":"test"}
.Это место, куда я хочу добавить данные из объекта req.session.auth.twitter
в БД. Как получить доступ к этим значениям из функции findUserById
?
Возможно ли это?Есть ли другой подход?Я смотрю на функцию findOrCreateUser, но я не знаю, как это изменить, не ломая мое приложение - я еще не понимаю концепцию Обещания.