diff --git a/migrations/20200604111448-userGroups-add-source.js b/migrations/20200604111448-userGroups-add-source.js new file mode 100644 index 000000000..8b05749d7 --- /dev/null +++ b/migrations/20200604111448-userGroups-add-source.js @@ -0,0 +1,17 @@ +'use strict'; + +exports.up = function(db, callback) { + db.runSql('ALTER TABLE userGroups ADD COLUMN source VARCHAR(128) DEFAULT ""', function (error) { + if (error) return callback(error); + + callback(); + }); +}; + +exports.down = function(db, callback) { + db.runSql('ALTER TABLE userGroups DROP COLUMN source', function (error) { + if (error) console.error(error); + callback(error); + }); +}; + diff --git a/migrations/schema.sql b/migrations/schema.sql index ddecda16e..1a653d23a 100644 --- a/migrations/schema.sql +++ b/migrations/schema.sql @@ -37,6 +37,7 @@ CREATE TABLE IF NOT EXISTS users( CREATE TABLE IF NOT EXISTS userGroups( id VARCHAR(128) NOT NULL UNIQUE, name VARCHAR(254) NOT NULL UNIQUE, + source VARCHAR(128) DEFAULT "", PRIMARY KEY(id)); CREATE TABLE IF NOT EXISTS groupMembers( diff --git a/src/groupdb.js b/src/groupdb.js index 535df90e8..177b57817 100644 --- a/src/groupdb.js +++ b/src/groupdb.js @@ -29,7 +29,7 @@ var assert = require('assert'), BoxError = require('./boxerror.js'), database = require('./database.js'); -var GROUPS_FIELDS = [ 'id', 'name' ].join(','); +var GROUPS_FIELDS = [ 'id', 'name', 'source' ].join(','); function get(groupId, callback) { assert.strictEqual(typeof groupId, 'string'); @@ -96,12 +96,13 @@ function getAllWithMembers(callback) { }); } -function add(id, name, callback) { +function add(id, name, source, callback) { assert.strictEqual(typeof id, 'string'); assert.strictEqual(typeof name, 'string'); + assert.strictEqual(typeof source, 'string'); assert.strictEqual(typeof callback, 'function'); - database.query('INSERT INTO userGroups (id, name) VALUES (?, ?)', [ id, name ], function (error, result) { + database.query('INSERT INTO userGroups (id, name, source) VALUES (?, ?, ?)', [ id, name, source ], function (error, result) { if (error && error.code === 'ER_DUP_ENTRY') return callback(new BoxError(BoxError.ALREADY_EXISTS, error)); if (error || result.affectedRows !== 1) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); diff --git a/src/groups.js b/src/groups.js index 4dda3a598..7f9999d99 100644 --- a/src/groups.js +++ b/src/groups.js @@ -57,7 +57,8 @@ function create(name, callback) { if (error) return callback(error); var id = 'gid-' + uuid.v4(); - groupdb.add(id, name, function (error) { + var source = ''; // empty means local + groupdb.add(id, name, source, function (error) { if (error) return callback(error); callback(null, { id: id, name: name }); diff --git a/src/test/apps-test.js b/src/test/apps-test.js index cfbe9015f..d684da6ca 100644 --- a/src/test/apps-test.js +++ b/src/test/apps-test.js @@ -71,11 +71,13 @@ describe('Apps', function () { var GROUP_0 = { id: 'somegroup', - name: 'group0' + name: 'group0', + source: '' }; var GROUP_1 = { id: 'anothergroup', - name: 'group1' + name: 'group1', + source: 'ldap' }; const DOMAIN_0 = { @@ -180,8 +182,8 @@ describe('Apps', function () { userdb.add.bind(null, ADMIN_0.id, ADMIN_0), userdb.add.bind(null, USER_0.id, USER_0), userdb.add.bind(null, USER_1.id, USER_1), - groupdb.add.bind(null, GROUP_0.id, GROUP_0.name), - groupdb.add.bind(null, GROUP_1.id, GROUP_1.name), + groupdb.add.bind(null, GROUP_0.id, GROUP_0.name, GROUP_0.source), + groupdb.add.bind(null, GROUP_1.id, GROUP_1.name, GROUP_1.source), groups.addMember.bind(null, GROUP_0.id, USER_1.id), appdb.add.bind(null, APP_0.id, APP_0.appStoreId, APP_0.manifest, APP_0.location, APP_0.domain, apps._translatePortBindings(APP_0.portBindings, APP_0.manifest), APP_0), appdb.add.bind(null, APP_1.id, APP_1.appStoreId, APP_1.manifest, APP_1.location, APP_1.domain, apps._translatePortBindings(APP_1.portBindings, APP_1.manifest), APP_1), diff --git a/src/test/database-test.js b/src/test/database-test.js index 2a0dd5d09..b10683a12 100644 --- a/src/test/database-test.js +++ b/src/test/database-test.js @@ -1645,7 +1645,7 @@ describe('database', function () { var GROUP_ID_1 = 'foundersid'; it('can create a group', function (done) { - groupdb.add(GROUP_ID_1, 'founders', function (error) { + groupdb.add(GROUP_ID_1, 'founders', 'ldap', function (error) { expect(error).to.be(null); done(); });