Browse Source

Prevent root account users being re-created as internal budibase users

pull/4023/head
Rory Powell 5 years ago
parent
commit
b964813fad
  1. 1
      packages/auth/accounts.js
  2. 10
      packages/worker/src/api/controllers/global/users.js

1
packages/auth/accounts.js

@ -0,0 +1 @@
module.exports = require("./src/cloud/accounts")

10
packages/worker/src/api/controllers/global/users.js

@ -11,6 +11,7 @@ const { sendEmail } = require("../../../utilities/email")
const { user: userCache } = require("@budibase/auth/cache")
const { invalidateSessions } = require("@budibase/auth/sessions")
const CouchDB = require("../../../db")
const accounts = require("@budibase/auth/accounts")
const {
getGlobalDB,
getTenantId,
@ -49,10 +50,19 @@ async function saveUser(
// make sure another user isn't using the same email
let dbUser
if (email) {
// check budibase users inside the tenant
dbUser = await getGlobalUserByEmail(email)
if (dbUser != null && (dbUser._id !== _id || Array.isArray(dbUser))) {
throw "Email address already in use."
}
// check root account users in account portal
if (!env.SELF_HOSTED) {
const account = await accounts.getAccount(email)
if (account) {
throw "Email address already in use."
}
}
} else {
dbUser = await db.get(_id)
}

Loading…
Cancel
Save