From 01e62e3d79a9e1cd1deae7d7a9b6c2ae9c2fd4f8 Mon Sep 17 00:00:00 2001 From: Fabien O'Carroll Date: Wed, 16 Sep 2020 15:56:41 +0100 Subject: [PATCH] Added tokens table to the database no-issue This is a table to store single use tokens for use in magic links, the columns are as simple as possible at the moment and are designed as: id - standard ObjectID like all of our tables token - 128bit base64 encoded string data - arbitrary data to store against the token created_at - timestamp to allow for expiry to be implemented for tokens --- .../data/migrations/versions/3.34/01-add-tokens-table.js | 2 ++ core/server/data/schema/schema.js | 7 +++++++ test/api-acceptance/admin/db_spec.js | 2 +- test/unit/data/schema/integrity_spec.js | 2 +- 4 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 core/server/data/migrations/versions/3.34/01-add-tokens-table.js diff --git a/core/server/data/migrations/versions/3.34/01-add-tokens-table.js b/core/server/data/migrations/versions/3.34/01-add-tokens-table.js new file mode 100644 index 0000000000..5255101134 --- /dev/null +++ b/core/server/data/migrations/versions/3.34/01-add-tokens-table.js @@ -0,0 +1,2 @@ +const {addTable} = require('../../utils'); +module.exports = addTable('tokens'); diff --git a/core/server/data/schema/schema.js b/core/server/data/schema/schema.js index a970a5d70a..ae9a96ff3d 100644 --- a/core/server/data/schema/schema.js +++ b/core/server/data/schema/schema.js @@ -483,5 +483,12 @@ module.exports = { member_uuid: {type: 'string', maxlength: 36, nullable: false}, member_email: {type: 'string', maxlength: 191, nullable: false}, member_name: {type: 'string', maxlength: 191, nullable: true} + }, + tokens: { + id: {type: 'string', maxlength: 24, nullable: false, primary: true}, + token: {type: 'string', maxlength: 24, nullable: false, index: true}, + data: {type: 'string', maxlength: 2000, nullable: true}, + created_at: {type: 'dateTime', nullable: false}, + created_by: {type: 'string', maxlength: 24, nullable: false} } }; diff --git a/test/api-acceptance/admin/db_spec.js b/test/api-acceptance/admin/db_spec.js index 8bec2042da..bc231324ef 100644 --- a/test/api-acceptance/admin/db_spec.js +++ b/test/api-acceptance/admin/db_spec.js @@ -55,7 +55,7 @@ describe('DB API', function () { const jsonResponse = res.body; should.exist(jsonResponse.db); jsonResponse.db.should.have.length(1); - Object.keys(jsonResponse.db[0].data).length.should.eql(32); + Object.keys(jsonResponse.db[0].data).length.should.eql(33); }); }); diff --git a/test/unit/data/schema/integrity_spec.js b/test/unit/data/schema/integrity_spec.js index bea1c695b9..c61d0928a7 100644 --- a/test/unit/data/schema/integrity_spec.js +++ b/test/unit/data/schema/integrity_spec.js @@ -32,7 +32,7 @@ const defaultSettings = require('../../../../core/server/data/schema/default-set */ describe('DB version integrity', function () { // Only these variables should need updating - const currentSchemaHash = 'c2b2de0157edddb68791dde49391d4e5'; + const currentSchemaHash = 'e90889dff39d27934ad7550dcb0e641c'; const currentFixturesHash = '29148c40dfaf4f828c5fca95666f6545'; const currentSettingsHash = 'c8daa2c9632bb75f9d60655de09ae3bd'; const currentRoutesHash = '3d180d52c663d173a6be791ef411ed01';