OAuth2 exchange updates

master
rob 2 years ago
parent 8574f655fe
commit 7d2ee1f522

@ -12,10 +12,10 @@ const OAuth2ClientSchema = new Schema({
created: { type: Date, default: Date.now, required: true }, created: { type: Date, default: Date.now, required: true },
updated: { type: Date, default: Date.now, required: true }, updated: { type: Date, default: Date.now, required: true },
site: { site: {
name: { type: String, required: true },
description: { type: String, required: true },
domain: { type: String, required: true, index: 1 }, domain: { type: String, required: true, index: 1 },
domainKey: { type: String, required: true, index: 1 }, domainKey: { type: String, required: true, index: 1 },
name: { type: String, required: true },
description: { type: String, required: true },
company: { type: String, required: true }, company: { type: String, required: true },
}, },
secret: { type: String, required: true }, secret: { type: String, required: true },

@ -161,23 +161,48 @@ class OAuth2Service extends SiteService {
const NOW = new Date(); const NOW = new Date();
const PASSWORD_LEN = parseInt(process.env.DTP_CORE_AUTH_PASSWORD_LEN || '64', 10); const PASSWORD_LEN = parseInt(process.env.DTP_CORE_AUTH_PASSWORD_LEN || '64', 10);
const client = new OAuth2Client(); // scrub up the input data to help prevent shenanigans
client.created = NOW; clientDefinition.name = striptags(clientDefinition.name);
client.updated = NOW; clientDefinition.description = striptags(clientDefinition.description);
clientDefinition.domain = striptags(clientDefinition.domain);
client.site.name = striptags(clientDefinition.name); clientDefinition.domainKey = striptags(clientDefinition.domainKey);
client.site.description = striptags(clientDefinition.description);
client.site.domain = striptags(clientDefinition.domain); clientDefinition.company = striptags(clientDefinition.company);
client.site.domainKey = striptags(clientDefinition.domainKey);
client.site.company = striptags(clientDefinition.company); clientDefinition.secret = generatePassword(PASSWORD_LEN, false);
clientDefinition.coreAuth.scopes = clientDefinition.coreAuth.scopes.map((scope) => striptags(scope));
client.secret = generatePassword(PASSWORD_LEN, false); clientDefinition.coreAuth.redirectUri = striptags(clientDefinition.coreAuth.redirectUri);
client.scopes = clientDefinition.coreAuth.redirectUri.map((scope) => striptags(scope));
client.redirectUri = striptags(clientDefinition.coreAuth.redirectUri); /*
* Use an upsert to either update or create the OAuth2 client record for the
await client.save(); * calling host.
*/
const client = await OAuth2Client.updateOne(
{
'site.domain': clientDefinition.domain,
'site.domainKey': clientDefinition.domainKey,
},
{
$setOnInsert: {
created: NOW,
'site.domain': clientDefinition.domain,
'site.domainKey': clientDefinition.domainKey,
},
$set: {
updated: NOW,
'site.name': clientDefinition.name,
'site.description': clientDefinition.description,
'site.company': clientDefinition.company,
secret: clientDefinition.secret,
scopes: clientDefinition.coreAuth.scopes,
redirectUri: clientDefinition.coreAuth.redirectUri,
},
},
{ upsert: true, returnDocument: true },
);
this.log.info('new OAuth2 client created', { this.log.info('new OAuth2 client updated', {
clientId: client._id, clientId: client._id,
site: client.site.name, site: client.site.name,
domain: client.site.domain, domain: client.site.domain,

@ -2,4 +2,4 @@ extends ../layouts/main
block content block content
h1 Core Connect Response h1 Core Connect Response
pre= JSON.stringify(txConnect, null, 2) pre= JSON.stringify(txConnect.response, null, 2)
Loading…
Cancel
Save