diff --git a/.vscode/launch.json b/.vscode/launch.json index ff20b91..8385797 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -14,7 +14,7 @@ "program": "${workspaceFolder:dtp-base}/dtp-webapp.js", "console": "integratedTerminal", "env": { - "HTTP_BIND_PORT": "3310" + "HTTP_BIND_PORT": "3010" } }, { diff --git a/app/controllers/auth.js b/app/controllers/auth.js index 4dec3b3..d6c9887 100644 --- a/app/controllers/auth.js +++ b/app/controllers/auth.js @@ -184,6 +184,7 @@ class AuthController extends SiteController { try { const token = await ConnectToken.create({ created: new Date(), + userType: req.user.core ? 'CoreUser' : 'User', user: req.user._id, token: uuidv4(), }); diff --git a/app/models/connect-token.js b/app/models/connect-token.js index 3a1b3b3..7f22340 100644 --- a/app/models/connect-token.js +++ b/app/models/connect-token.js @@ -10,7 +10,8 @@ const Schema = mongoose.Schema; const ConnectTokenSchema = new Schema({ created: { type: Date, default: Date.now, required: true, index: -1, expires: '1m' }, - user: { type: Schema.ObjectId, required: true, index: true, ref: 'User' }, + userType: { type: String, enum: ['User', 'CoreUser'], required: true }, + user: { type: Schema.ObjectId, required: true, index: true, refPath: 'userType' }, token: { type: String, required: true }, claimed: { type: Date }, }); diff --git a/app/services/core-node.js b/app/services/core-node.js index 5e24224..3bbe988 100644 --- a/app/services/core-node.js +++ b/app/services/core-node.js @@ -79,27 +79,21 @@ class CoreNodeService extends SiteService { router.get( coreAuthCallbackUri, (req, res, next) => { - this.log.debug('Core auth callback', { - strategy: coreAuthStrategyName, - body: req.body, - params: req.params, - query: req.query, - }); + this.log.debug('Core auth callback', { strategy: coreAuthStrategyName }); return next(); }, passport.authenticate(coreAuthStrategyName, { failureRedirect: '/' }), - async (req, res) => { - this.log.info('tagging session as Core', { coreId: core._id }); + async (req, res, next) => { req.session.userType = 'Core'; req.session.coreId = core._id; - - // req.login(user, (error) => { - // if (error) { - // return next(error); - // } - // return res.redirect('/'); - // }); - return res.redirect('/'); + req.login(req.user, (error) => { + if (error) { + return next(error); + } + req.session.userType = 'Core'; + req.session.coreId = core._id; + return res.redirect('/'); + }); }, ); }); @@ -125,12 +119,6 @@ class CoreNodeService extends SiteService { }, async (accessToken, refreshToken, params, profile, cb) => { const NOW = new Date(); - this.log.info('Core login', { - accessToken, - refreshToken, - params, - profile, - }); try { const coreUserId = mongoose.Types.ObjectId(params.coreUserId); const user = await CoreUser.findOneAndUpdate( @@ -183,12 +171,6 @@ class CoreNodeService extends SiteService { }, ); - // const old = coreAuthStrategy._loadUserProfile; - coreAuthStrategy._loadUserProfile = async (accessToken, done) => { - this.log.info('loadUserProfile', { accessToken }); - return done(null); - }; - this.log.info('registering Core auth strategy', { name: coreAuthStrategyName, host: core.address.host, diff --git a/lib/site-common.js b/lib/site-common.js index 6886b8d..8638739 100644 --- a/lib/site-common.js +++ b/lib/site-common.js @@ -16,6 +16,17 @@ class SiteCommon extends Events { this.appTemplateRoot = path.join(this.dtp.config.root, 'app', 'templates'); } + regenerateSession (req) { + return new Promise((resolve, reject) => { + req.session.regenerate((err) => { + if (err) { + return reject(err); + } + resolve(); + }); + }); + } + saveSession (req) { return new Promise((resolve, reject) => { req.session.save((err) => { diff --git a/lib/site-platform.js b/lib/site-platform.js index dc037b3..4239460 100644 --- a/lib/site-platform.js +++ b/lib/site-platform.js @@ -90,7 +90,7 @@ module.connectRedis = async (dtp) => { port: parseInt(process.env.REDIS_PORT || '6379', 10), password: process.env.REDIS_PASSWORD, keyPrefix: process.env.REDIS_KEY_PREFIX, - lazyConnect: true, + lazyConnect: false, }; module.log.info('connecting to Redis', { host: options.host,