mirror of
https://github.com/openstf/stf
synced 2025-10-05 10:39:25 +02:00
ADB connect now respects auth keys in the settings page.
This commit is contained in:
parent
0a67c8c272
commit
e6c1de5194
12 changed files with 322 additions and 49 deletions
|
@ -10,11 +10,13 @@ var csrf = require('csurf')
|
|||
var Promise = require('bluebird')
|
||||
var httpProxy = require('http-proxy')
|
||||
var compression = require('compression')
|
||||
var adbkit = require('adbkit')
|
||||
|
||||
var logger = require('../../util/logger')
|
||||
var pathutil = require('../../util/pathutil')
|
||||
var dbapi = require('../../db/api')
|
||||
var datautil = require('../../util/datautil')
|
||||
var requtil = require('../../util/requtil')
|
||||
|
||||
var auth = require('./middleware/auth')
|
||||
var deviceIconMiddleware = require('./middleware/device-icons')
|
||||
|
@ -147,6 +149,78 @@ module.exports = function(options) {
|
|||
})
|
||||
})
|
||||
|
||||
app.post('/api/v1/app/user/keys/adb', function(req, res) {
|
||||
requtil.validate(req, function() {
|
||||
req.checkBody('title').notEmpty().len(1, 100)
|
||||
req.checkBody('key').notEmpty()
|
||||
})
|
||||
.then(function() {
|
||||
return adbkit.util.parsePublicKey(req.body.key)
|
||||
})
|
||||
.then(function(key) {
|
||||
return dbapi.lookupUsersByAdbKey(key.fingerprint)
|
||||
.then(function(users) {
|
||||
if (users.length) {
|
||||
throw new dbapi.DuplicateSecondaryIndexError()
|
||||
}
|
||||
else {
|
||||
// Well, this doesn't guarantee that no one else inserts the
|
||||
// same key before we do, but it's hardly a big enough problem
|
||||
// to consider right now.
|
||||
return dbapi.insertUserAdbKey(req.user.email, {
|
||||
title: req.body.title
|
||||
, fingerprint: key.fingerprint
|
||||
})
|
||||
.then(function() {
|
||||
res.send({
|
||||
success: true
|
||||
, key: {
|
||||
title: req.body.title
|
||||
, fingerprint: key.fingerprint
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
.catch(requtil.ValidationError, function(err) {
|
||||
res.status(400).send({
|
||||
success: false
|
||||
, error: 'ValidationError'
|
||||
, validationErrors: err.errors
|
||||
})
|
||||
})
|
||||
.catch(dbapi.DuplicateSecondaryIndexError, function() {
|
||||
res.status(400).send({
|
||||
success: false
|
||||
, error: 'DuplicateKeyError'
|
||||
})
|
||||
})
|
||||
.catch(function(err) {
|
||||
log.error('Failed to insert ADB key: ', err.stack)
|
||||
res.status(500).send({
|
||||
success: false
|
||||
, error: 'ServerError'
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
app.delete('/api/v1/app/user/keys/adb/:id', function(req, res) {
|
||||
dbapi.deleteUserAdbKey(req.user.email, req.params.id)
|
||||
.then(function() {
|
||||
res.send({
|
||||
success: true
|
||||
})
|
||||
})
|
||||
.catch(function(err) {
|
||||
log.error('Failed to delete ADB key: ', err.stack)
|
||||
res.status(500).send({
|
||||
success: false
|
||||
, error: 'ServerError'
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
app.get('/api/v1/app/group', function(req, res) {
|
||||
dbapi.loadGroup(req.user.email)
|
||||
.then(function(cursor) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue