OAuth session management

master
rob 2 years ago
parent 7bf1acbc8b
commit a03e02ec41

@ -14,7 +14,7 @@
"program": "${workspaceFolder:dtp-base}/dtp-webapp.js",
"console": "integratedTerminal",
"env": {
"HTTP_BIND_PORT": "3310"
"HTTP_BIND_PORT": "3010"
}
},
{

@ -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(),
});

@ -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 },
});

@ -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,

@ -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) => {

@ -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,

Loading…
Cancel
Save