diff --git a/src/clients.js b/src/clients.js index 5083bee37..513df344f 100644 --- a/src/clients.js +++ b/src/clients.js @@ -7,6 +7,7 @@ exports = module.exports = { get: get, del: del, getAllWithDetailsByUserId: getAllWithDetailsByUserId, + getByAppIdAndType: getByAppIdAndType, getClientTokensByUserId: getClientTokensByUserId, delClientTokensByUserId: delClientTokensByUserId, @@ -170,6 +171,17 @@ function getAllWithDetailsByUserId(userId, callback) { }); } +function getByAppIdAndType(appId, type, callback) { + assert.strictEqual(typeof appId, 'string'); + assert.strictEqual(typeof type, 'string'); + assert.strictEqual(typeof callback, 'function'); + + clientdb.getByAppIdAndType(appId, type, function (error, result) { + if (error) return callback(error); + callback(null, result); + }); +} + function getClientTokensByUserId(clientId, userId, callback) { assert.strictEqual(typeof clientId, 'string'); assert.strictEqual(typeof userId, 'string'); diff --git a/src/cloudron.js b/src/cloudron.js index a38ef65be..77b376255 100644 --- a/src/cloudron.js +++ b/src/cloudron.js @@ -31,6 +31,7 @@ var apps = require('./apps.js'), async = require('async'), backups = require('./backups.js'), clientdb = require('./clientdb.js'), + clients = require('./clients.js'), config = require('./config.js'), constants = require('./constants.js'), debug = require('debug')('box:cloudron'), @@ -230,7 +231,7 @@ function activate(username, password, email, displayName, ip, auditSource, callb if (error && error.reason === UserError.BAD_FIELD) return callback(new CloudronError(CloudronError.BAD_FIELD, error.message)); if (error) return callback(new CloudronError(CloudronError.INTERNAL_ERROR, error)); - clientdb.getByAppIdAndType('webadmin', clientdb.TYPE_ADMIN, function (error, result) { + clients.getByAppIdAndType('webadmin', clientdb.TYPE_ADMIN, function (error, result) { if (error) return callback(new CloudronError(CloudronError.INTERNAL_ERROR, error)); // Also generate a token so the admin creation can also act as a login diff --git a/src/oauthproxy.js b/src/oauthproxy.js index bd735f10c..3ef189036 100644 --- a/src/oauthproxy.js +++ b/src/oauthproxy.js @@ -8,6 +8,7 @@ exports = module.exports = { var appdb = require('./appdb.js'), assert = require('assert'), clientdb = require('./clientdb.js'), + clients = require('./clients.js'), config = require('./config.js'), DatabaseError = require('./databaseerror.js'), debug = require('debug')('box:proxy'), @@ -124,7 +125,7 @@ function authenticate(req, res, next) { return res.send(500, 'Unknown app.'); } - clientdb.getByAppIdAndType(result.id, clientdb.TYPE_PROXY, function (error, result) { + clients.getByAppIdAndType(result.id, clientdb.TYPE_PROXY, function (error, result) { if (error) { console.error('Unknown OAuth client.', error); return res.send(500, 'Unknown OAuth client.'); diff --git a/src/routes/test/apps-test.js b/src/routes/test/apps-test.js index d627bf4c8..ebdfcb7fc 100644 --- a/src/routes/test/apps-test.js +++ b/src/routes/test/apps-test.js @@ -13,6 +13,7 @@ var appdb = require('../../appdb.js'), async = require('async'), child_process = require('child_process'), clientdb = require('../../clientdb.js'), + clients = require('../../clients.js'), config = require('../../config.js'), constants = require('../../constants.js'), database = require('../../database.js'), @@ -709,7 +710,7 @@ describe('Apps', function () { appContainer.inspect(function (error, data) { expect(error).to.not.be.ok(); - clientdb.getByAppIdAndType(APP_ID, clientdb.TYPE_OAUTH, function (error, client) { + clients.getByAppIdAndType(APP_ID, clientdb.TYPE_OAUTH, function (error, client) { expect(error).to.not.be.ok(); expect(client.id.length).to.be(40); // cid- + 32 hex chars (128 bits) + 4 hyphens expect(client.clientSecret.length).to.be(64); // 32 hex chars (256 bits) diff --git a/src/user.js b/src/user.js index 1507971f4..1feee67aa 100644 --- a/src/user.js +++ b/src/user.js @@ -24,6 +24,7 @@ exports = module.exports = { var assert = require('assert'), clientdb = require('./clientdb.js'), + clients = require('./clients.js'), crypto = require('crypto'), debug = require('debug')('box:user'), DatabaseError = require('./databaseerror.js'), @@ -444,7 +445,7 @@ function setPassword(userId, newPassword, callback) { if (error) return callback(new UserError(UserError.INTERNAL_ERROR, error)); // Also generate a token so the new user can get logged in immediately - clientdb.getByAppIdAndType('webadmin', clientdb.TYPE_ADMIN, function (error, result) { + clients.getByAppIdAndType('webadmin', clientdb.TYPE_ADMIN, function (error, result) { if (error) return callback(new UserError(UserError.INTERNAL_ERROR, error)); var token = tokendb.generateToken();