1
0
Fork 0
mirror of https://github.com/openstf/stf synced 2025-10-05 19:42:01 +02:00

Add user to rethinkdb after login.

This commit is contained in:
Simo Kinnunen 2014-01-28 12:22:08 +09:00
parent 23d068490e
commit 881996557a
5 changed files with 42 additions and 7 deletions

14
lib/db/api.js Normal file
View file

@ -0,0 +1,14 @@
var r = require('rethinkdb')
var db = require('./')
module.exports.saveUserAfterLogin = function(user) {
return db.run(r.table('users').insert({
email: user.email
, name: user.name
, lastLogin: r.now()
}
, {
upsert: true
}))
}

View file

@ -15,8 +15,23 @@ function connect() {
log.fatal('Connection error', err.stack)
process.exit(1)
})
return conn
return setup(conn)
})
}
module.exports = connect().then(setup)
var db = module.exports = Object.create(null)
// Export memoized connection as a Promise
db.connect = (function() {
var connection = connect()
return function() {
return connection
}
})()
// Small utility for running queries without having to acquire a connection
db.run = function(q) {
return db.connect().then(function(conn) {
return rutil.run(conn, q)
})
}

View file

@ -1,5 +1,5 @@
module.exports = {
users: {
primaryKey: 'id'
primaryKey: 'email'
}
}

View file

@ -1,6 +1,8 @@
var jwtutil = require('../util/jwtutil')
var urlutil = require('../util/urlutil')
var dbapi = require('../db/api')
module.exports = function(options) {
return function(req, res, next) {
if (req.query.jwt) {
@ -9,8 +11,12 @@ module.exports = function(options) {
, redir = urlutil.removeParam(req.url, 'jwt')
if (data) {
// Redirect once to get rid of the token
req.session.jwt = data
res.redirect(redir)
dbapi.saveUserAfterLogin(data)
.then(function() {
req.session.jwt = data
res.redirect(redir)
})
.catch(next)
}
else {
// Invalid token, forward to auth client

View file

@ -6,7 +6,7 @@ var validator = require('express-validator')
var logger = require('../util/logger')
var pathutil = require('../util/pathutil')
var jwt = require('../middleware/jwt')
var auth = require('../middleware/auth')
module.exports = function(options) {
var log = logger.createLogger('app')
@ -22,7 +22,7 @@ module.exports = function(options) {
secret: options.secret
, key: options.ssid
}))
app.use(jwt({
app.use(auth({
secret: options.secret
, authUrl: options.authUrl
}))