Browse Source

Making some changes to how configs are scoped.

master
mike12345567 5 years ago
parent
commit
8c1f274fbb
  1. 10
      packages/auth/src/db/utils.js
  2. 4
      packages/worker/src/api/controllers/admin/auth.js
  3. 8
      packages/worker/src/api/controllers/admin/configs.js
  4. 4
      packages/worker/src/utilities/email.js
  5. 4
      packages/worker/src/utilities/templates.js

10
packages/auth/src/db/utils.js

@ -123,7 +123,7 @@ const getConfigParams = ({ type, group, user }, otherProps = {}) => {
* @param {Object} scopes - the type, group and userID scopes of the configuration. * @param {Object} scopes - the type, group and userID scopes of the configuration.
* @returns The most granular configuration document based on the scope. * @returns The most granular configuration document based on the scope.
*/ */
const determineScopedConfig = async function (db, { type, user, group }) { const getScopedFullConfig = async function (db, { type, user, group }) {
const response = await db.allDocs( const response = await db.allDocs(
getConfigParams( getConfigParams(
{ type, user, group }, { type, user, group },
@ -160,6 +160,12 @@ const determineScopedConfig = async function (db, { type, user, group }) {
return scopedConfig.doc return scopedConfig.doc
} }
async function getScopedConfig(db, params) {
const configDoc = await getScopedFullConfig(db, params)
return configDoc && configDoc.config ? configDoc.config : configDoc
}
exports.getScopedConfig = getScopedConfig
exports.generateConfigID = generateConfigID exports.generateConfigID = generateConfigID
exports.getConfigParams = getConfigParams exports.getConfigParams = getConfigParams
exports.determineScopedConfig = determineScopedConfig exports.getScopedFullConfig = getScopedFullConfig

4
packages/worker/src/api/controllers/admin/auth.js

@ -93,7 +93,7 @@ exports.logout = async ctx => {
*/ */
exports.googlePreAuth = async (ctx, next) => { exports.googlePreAuth = async (ctx, next) => {
const db = new CouchDB(GLOBAL_DB) const db = new CouchDB(GLOBAL_DB)
const config = await authPkg.db.determineScopedConfig(db, { const config = await authPkg.db.getScopedConfig(db, {
type: Configs.GOOGLE, type: Configs.GOOGLE,
group: ctx.query.group, group: ctx.query.group,
}) })
@ -107,7 +107,7 @@ exports.googlePreAuth = async (ctx, next) => {
exports.googleAuth = async (ctx, next) => { exports.googleAuth = async (ctx, next) => {
const db = new CouchDB(GLOBAL_DB) const db = new CouchDB(GLOBAL_DB)
const config = await authPkg.db.determineScopedConfig(db, { const config = await authPkg.db.getScopedConfig(db, {
type: Configs.GOOGLE, type: Configs.GOOGLE,
group: ctx.query.group, group: ctx.query.group,
}) })

8
packages/worker/src/api/controllers/admin/configs.js

@ -3,7 +3,7 @@ const {
generateConfigID, generateConfigID,
StaticDatabases, StaticDatabases,
getConfigParams, getConfigParams,
determineScopedConfig, getScopedFullConfig,
} = require("@budibase/auth").db } = require("@budibase/auth").db
const { Configs } = require("../../../constants") const { Configs } = require("../../../constants")
const email = require("../../../utilities/email") const email = require("../../../utilities/email")
@ -16,7 +16,7 @@ exports.save = async function (ctx) {
// Config does not exist yet // Config does not exist yet
if (!ctx.request.body._id) { if (!ctx.request.body._id) {
config._id = generateConfigID({ ctx.request.body._id = generateConfigID({
type, type,
group, group,
user, user,
@ -31,7 +31,7 @@ exports.save = async function (ctx) {
} }
try { try {
const response = await db.put(config) const response = await db.put(ctx.request.body)
ctx.body = { ctx.body = {
type, type,
_id: response.id, _id: response.id,
@ -73,7 +73,7 @@ exports.find = async function (ctx) {
try { try {
// Find the config with the most granular scope based on context // Find the config with the most granular scope based on context
const scopedConfig = await determineScopedConfig(db, { const scopedConfig = await getScopedFullConfig(db, {
type: ctx.params.type, type: ctx.params.type,
user: userId, user: userId,
group: groupId, group: groupId,

4
packages/worker/src/utilities/email.js

@ -1,6 +1,6 @@
const nodemailer = require("nodemailer") const nodemailer = require("nodemailer")
const CouchDB = require("../db") const CouchDB = require("../db")
const { StaticDatabases, determineScopedConfig } = require("@budibase/auth").db const { StaticDatabases, getScopedConfig } = require("@budibase/auth").db
const { EmailTemplatePurpose, TemplateTypes, Configs } = require("../constants") const { EmailTemplatePurpose, TemplateTypes, Configs } = require("../constants")
const { getTemplateByPurpose } = require("../constants/templates") const { getTemplateByPurpose } = require("../constants/templates")
const { getSettingsTemplateContext } = require("./templates") const { getSettingsTemplateContext } = require("./templates")
@ -97,7 +97,7 @@ async function getSmtpConfiguration(db, groupId = null) {
if (groupId) { if (groupId) {
params.group = groupId params.group = groupId
} }
return determineScopedConfig(db, params) return getScopedConfig(db, params)
} }
/** /**

4
packages/worker/src/utilities/templates.js

@ -1,5 +1,5 @@
const CouchDB = require("../db") const CouchDB = require("../db")
const { determineScopedConfig, StaticDatabases } = require("@budibase/auth").db const { getScopedConfig, StaticDatabases } = require("@budibase/auth").db
const { const {
Configs, Configs,
TemplateBindings, TemplateBindings,
@ -15,7 +15,7 @@ const BASE_COMPANY = "Budibase"
exports.getSettingsTemplateContext = async (purpose, code = null) => { exports.getSettingsTemplateContext = async (purpose, code = null) => {
const db = new CouchDB(StaticDatabases.GLOBAL.name) const db = new CouchDB(StaticDatabases.GLOBAL.name)
// TODO: use more granular settings in the future if required // TODO: use more granular settings in the future if required
const settings = await determineScopedConfig(db, { type: Configs.SETTINGS }) const settings = await getScopedConfig(db, { type: Configs.SETTINGS })
if (!settings.platformUrl) { if (!settings.platformUrl) {
settings.platformUrl = LOCAL_URL settings.platformUrl = LOCAL_URL
} }

Loading…
Cancel
Save