@ -5,7 +5,7 @@ const { getSession, updateSessionTTL } = require("../security/sessions")
const { buildMatcherRegex , matches } = require ( "./matchers" )
const { buildMatcherRegex , matches } = require ( "./matchers" )
const env = require ( "../environment" )
const env = require ( "../environment" )
const { SEPARATOR , ViewNames , queryGlobalView } = require ( "../../db" )
const { SEPARATOR , ViewNames , queryGlobalView } = require ( "../../db" )
const { getGlobalDB } = require ( "../tenancy" )
const { getGlobalDB , doInTenant } = require ( "../tenancy" )
const { decrypt } = require ( "../security/encryption" )
const { decrypt } = require ( "../security/encryption" )
function finalise (
function finalise (
@ -25,20 +25,25 @@ async function checkApiKey(apiKey, populateUser) {
}
}
const decrypted = decrypt ( apiKey )
const decrypted = decrypt ( apiKey )
const tenantId = decrypted . split ( SEPARATOR ) [ 0 ]
const tenantId = decrypted . split ( SEPARATOR ) [ 0 ]
const db = getGlobalDB ( tenantId )
return doInTenant ( tenantId , async ( ) => {
// api key is encrypted in the database
const db = getGlobalDB ( )
const userId = await queryGlobalView (
// api key is encrypted in the database
ViewNames . BY_API_KEY ,
const userId = await queryGlobalView (
{
ViewNames . BY_API_KEY ,
key : apiKey ,
{
} ,
key : apiKey ,
db
} ,
)
db
if ( userId ) {
)
return { valid : true , user : await getUser ( userId , tenantId , populateUser ) }
if ( userId ) {
} else {
return {
throw "Invalid API key"
valid : true ,
}
user : await getUser ( userId , tenantId , populateUser ) ,
}
} else {
throw "Invalid API key"
}
} )
}
}
/ * *
/ * *