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:
parent
23d068490e
commit
881996557a
5 changed files with 42 additions and 7 deletions
14
lib/db/api.js
Normal file
14
lib/db/api.js
Normal 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
|
||||
}))
|
||||
}
|
|
@ -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)
|
||||
})
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
module.exports = {
|
||||
users: {
|
||||
primaryKey: 'id'
|
||||
primaryKey: 'email'
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
}))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue