diff --git a/config/passport.js b/config/passport.js index 88c930a..113ee03 100644 --- a/config/passport.js +++ b/config/passport.js @@ -1,5 +1,5 @@ const passport = require('koa-passport') -const User = require('../src/models/users') +const User = require('../src/adapters/localdb/models/users') const Strategy = require('passport-local') passport.serializeUser((user, done) => { @@ -15,24 +15,34 @@ passport.deserializeUser(async (id, done) => { } }) -passport.use('local', new Strategy({ - usernameField: 'email', - passwordField: 'password' -}, async (email, password, done) => { - try { - const user = await User.findOne({ email }) - if (!user) { return done(null, false) } +passport.use( + 'local', + new Strategy( + { + usernameField: 'email', + passwordField: 'password' + }, + async (email, password, done) => { + try { + const user = await User.findOne({ email }) + if (!user) { + return done(null, false) + } - try { - const isMatch = await user.validatePassword(password) + try { + const isMatch = await user.validatePassword(password) - if (!isMatch) { return done(null, false) } + if (!isMatch) { + return done(null, false) + } - done(null, user) - } catch (err) { - done(err) + done(null, user) + } catch (err) { + done(err) + } + } catch (err) { + return done(err) + } } - } catch (err) { - return done(err) - } -})) + ) +) diff --git a/src/adapters/index.js b/src/adapters/index.js index 251b2f3..8a96f89 100644 --- a/src/adapters/index.js +++ b/src/adapters/index.js @@ -4,8 +4,12 @@ https://troutsblog.com/blog/clean-architecture */ -// Individual adapter libraries. +// Load individual adapter libraries. const IPFSAdapter = require('./ipfs') -const ipfs = new IPFSAdapter() +const LocalDB = require('./localdb') -module.exports = { ipfs } +// Instantiate adapter libraries. +const ipfs = new IPFSAdapter() +const localdb = new LocalDB() + +module.exports = { ipfs, localdb } diff --git a/src/adapters/localdb/index.js b/src/adapters/localdb/index.js new file mode 100644 index 0000000..1589241 --- /dev/null +++ b/src/adapters/localdb/index.js @@ -0,0 +1,15 @@ +/* + This library encapsulates code concerned with MongoDB and Mongoose models. +*/ + +// Load Mongoose models. +const Users = require('./models/users') + +class LocalDB { + constructor () { + // Encapsulate dependencies + this.Users = Users + } +} + +module.exports = LocalDB diff --git a/src/models/users.js b/src/adapters/localdb/models/users.js similarity index 97% rename from src/models/users.js rename to src/adapters/localdb/models/users.js index 46164ed..918d294 100644 --- a/src/models/users.js +++ b/src/adapters/localdb/models/users.js @@ -1,6 +1,6 @@ const mongoose = require('mongoose') const bcrypt = require('bcryptjs') -const config = require('../../config') +const config = require('../../../../config') const jwt = require('jsonwebtoken') const User = new mongoose.Schema({ @@ -19,7 +19,6 @@ const User = new mongoose.Schema({ }, message: props => `${props.value} is not a valid Email format!` } - } }) diff --git a/src/controllers/json-rpc/validators.js b/src/controllers/json-rpc/validators.js index 2df5f6e..7158dbf 100644 --- a/src/controllers/json-rpc/validators.js +++ b/src/controllers/json-rpc/validators.js @@ -8,7 +8,7 @@ const jwt = require('jsonwebtoken') // Local libraries const config = require('../../../config') -const UserModel = require('../../models/users') +const UserModel = require('../../adapters/localdb/models/users') class Validators { constructor () { diff --git a/src/controllers/rest-api/middleware/validators.js b/src/controllers/rest-api/middleware/validators.js index 80cc850..7c5c1c9 100644 --- a/src/controllers/rest-api/middleware/validators.js +++ b/src/controllers/rest-api/middleware/validators.js @@ -2,7 +2,7 @@ REST API validator middleware. */ -const User = require('../../../models/users') +const User = require('../../../adapters/localdb/models/users') const config = require('../../../../config') const getToken = require('../../../lib/auth') const jwt = require('jsonwebtoken') diff --git a/src/controllers/rest-api/users/controller.js b/src/controllers/rest-api/users/controller.js index aaa51af..47ed22b 100644 --- a/src/controllers/rest-api/users/controller.js +++ b/src/controllers/rest-api/users/controller.js @@ -3,7 +3,7 @@ */ // User database model. -const UserModel = require('../../../models/users') +const UserModel = require('../../../adapters/localdb/models/users') // User library for business logic. const UserLib = require('../../../lib/users') diff --git a/src/lib/admin.js b/src/lib/admin.js index 7b08455..18306e1 100644 --- a/src/lib/admin.js +++ b/src/lib/admin.js @@ -12,7 +12,7 @@ 'use strict' const axios = require('axios').default const mongoose = require('mongoose') -const User = require('../models/users') +const User = require('../adapters/localdb/models/users') const config = require('../../config') const JsonFiles = require('./utils/json-files') const jsonFiles = new JsonFiles() diff --git a/src/lib/users.js b/src/lib/users.js index 2f10996..c195841 100644 --- a/src/lib/users.js +++ b/src/lib/users.js @@ -3,7 +3,7 @@ functions are called by the /user REST API endpoints. */ -const UserModel = require('../models/users') +const UserModel = require('../adapters/localdb/models/users') const wlogger = require('./wlogger') class UserLib { diff --git a/test/unit/json-rpc/a13-users.unit.js b/test/unit/json-rpc/a13-users.unit.js index e8e9b1d..3d1c227 100644 --- a/test/unit/json-rpc/a13-users.unit.js +++ b/test/unit/json-rpc/a13-users.unit.js @@ -16,7 +16,7 @@ process.env.SVC_ENV = 'test' const config = require('../../../config') const UserRPC = require('../../../src/controllers/json-rpc/users') const RateLimit = require('../../../src/controllers/json-rpc/rate-limit') -const UserModel = require('../../../src/models/users') +const UserModel = require('../../../src/adapters/localdb/models/users') describe('#UserRPC', () => { let uut diff --git a/test/unit/rest-api/a02-users.rest-unit.js b/test/unit/rest-api/a02-users.rest-unit.js index ef87e32..9a2fe5e 100644 --- a/test/unit/rest-api/a02-users.rest-unit.js +++ b/test/unit/rest-api/a02-users.rest-unit.js @@ -10,7 +10,7 @@ const mongoose = require('mongoose') // Local support libraries const config = require('../../../config') const testUtils = require('../../utils/test-utils') -const User = require('../../../src/models/users') +const User = require('../../../src/adapters/localdb/models/users') const UserController = require('../../../src/controllers/rest-api/users/controller') let uut diff --git a/test/utils/test-utils.js b/test/utils/test-utils.js index 31b26b0..02d72b4 100644 --- a/test/utils/test-utils.js +++ b/test/utils/test-utils.js @@ -8,7 +8,7 @@ const axios = require('axios').default // Local libraries const config = require('../../config') -const User = require('../../src/models/users') +const User = require('../../src/adapters/localdb/models/users') const LOCALHOST = `http://localhost:${config.port}`