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

allow user to create an access token to access stf api from user settings tab.

This commit is contained in:
Vishal Banthia 2015-11-19 19:50:33 +09:00
parent ddc24e5dc5
commit 62413b3780
21 changed files with 263 additions and 65 deletions

View file

@ -7,6 +7,7 @@ var Promise = require('bluebird')
var _ = require('lodash')
var request = Promise.promisifyAll(require('request'))
var adbkit = require('adbkit')
var uuid = require('node-uuid')
var logger = require('../../util/logger')
var wire = require('../../wire')
@ -20,6 +21,7 @@ var zmqutil = require('../../util/zmqutil')
var cookieSession = require('./middleware/cookie-session')
var ip = require('./middleware/remote-ip')
var auth = require('./middleware/auth')
var jwtutil = require('../../util/jwtutil')
module.exports = function(options) {
var log = logger.createLogger('websocket')
@ -334,6 +336,39 @@ module.exports = function(options) {
.on('user.settings.reset', function() {
dbapi.resetUserSettings(user.email)
})
.on('user.keys.accessToken.generate', function(data) {
var expiry = Date.now() + 100 * 365 * 24 * 3600
, jwt = jwtutil.encode({
payload: {
email: user.email
, name: user.name
}
, secret: options.secret
, expiry: expiry
})
var tokenId = uuid.v4()
, title = data.title
return dbapi.saveUserAccessToken(user.email, {
title: title
, tokenId: tokenId
, jwt: jwt
})
.then(function() {
socket.emit('user.keys.accessToken.generated', {
title: title
, tokenId: tokenId
, jwt: jwt
})
})
})
.on('user.keys.accessToken.remove', function(data) {
return dbapi.removeUserAccessToken(user.email, data.title)
.then(function() {
socket.emit('user.keys.accessToken.removed', data.title)
})
})
.on('user.keys.adb.add', function(data) {
return adbkit.util.parsePublicKey(data.key)
.then(function(key) {