2022-02-12 11:24:48 +13:00
|
|
|
const { getGlobalDB, getTenantId } = require("@budibase/backend-core/tenancy")
|
|
|
|
const { generateDevInfoID, SEPARATOR } = require("@budibase/backend-core/db")
|
2022-02-11 08:06:49 +13:00
|
|
|
const { newid } = require("@budibase/backend-core/utils")
|
|
|
|
|
2022-02-12 11:24:48 +13:00
|
|
|
function newApiKey() {
|
|
|
|
return `${getTenantId()}${SEPARATOR}${newid()}`
|
|
|
|
}
|
|
|
|
|
2022-02-11 08:06:49 +13:00
|
|
|
function cleanupDevInfo(info) {
|
|
|
|
// user doesn't need to aware of dev doc info
|
|
|
|
delete info._id
|
|
|
|
delete info._rev
|
|
|
|
return info
|
|
|
|
}
|
|
|
|
|
2022-02-11 07:34:55 +13:00
|
|
|
exports.generateAPIKey = async ctx => {
|
2022-02-11 08:06:49 +13:00
|
|
|
const db = getGlobalDB()
|
|
|
|
const id = generateDevInfoID(ctx.user._id)
|
|
|
|
let devInfo
|
|
|
|
try {
|
|
|
|
devInfo = await db.get(id)
|
|
|
|
} catch (err) {
|
2022-02-12 11:24:48 +13:00
|
|
|
devInfo = { _id: id, userId: ctx.user._id }
|
2022-02-11 07:34:55 +13:00
|
|
|
}
|
2022-02-12 11:24:48 +13:00
|
|
|
devInfo.apiKey = newApiKey()
|
2022-02-11 08:06:49 +13:00
|
|
|
await db.put(devInfo)
|
|
|
|
ctx.body = cleanupDevInfo(devInfo)
|
2022-02-11 07:34:55 +13:00
|
|
|
}
|
|
|
|
|
|
|
|
exports.fetchAPIKey = async ctx => {
|
2022-02-11 08:06:49 +13:00
|
|
|
const db = getGlobalDB()
|
|
|
|
const id = generateDevInfoID(ctx.user._id)
|
|
|
|
let devInfo
|
|
|
|
try {
|
|
|
|
devInfo = await db.get(id)
|
|
|
|
} catch (err) {
|
|
|
|
devInfo = {
|
|
|
|
_id: id,
|
2022-02-12 11:24:48 +13:00
|
|
|
userId: ctx.user._id,
|
|
|
|
apiKey: newApiKey(),
|
2022-02-11 08:06:49 +13:00
|
|
|
}
|
|
|
|
await db.put(devInfo)
|
2022-02-11 07:34:55 +13:00
|
|
|
}
|
2022-02-11 08:06:49 +13:00
|
|
|
ctx.body = cleanupDevInfo(devInfo)
|
2022-02-11 07:34:55 +13:00
|
|
|
}
|