Merge pull request #10633 from Budibase/fix/live-app-user-updates
Production app user updates
This commit is contained in:
commit
62e9777407
|
@ -86,6 +86,7 @@ const getCurrentIdentity = async (): Promise<Identity> => {
|
||||||
installationId,
|
installationId,
|
||||||
tenantId,
|
tenantId,
|
||||||
environment,
|
environment,
|
||||||
|
realTenantId: context.getTenantId(),
|
||||||
hostInfo: userContext.hostInfo,
|
hostInfo: userContext.hostInfo,
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -7,7 +7,7 @@ import {
|
||||||
InternalTables,
|
InternalTables,
|
||||||
} from "../../db/utils"
|
} from "../../db/utils"
|
||||||
import { isEqual } from "lodash"
|
import { isEqual } from "lodash"
|
||||||
import { ContextUser, UserMetadata, User } from "@budibase/types"
|
import { ContextUser, UserMetadata, User, Database } from "@budibase/types"
|
||||||
|
|
||||||
export function combineMetadataAndUser(
|
export function combineMetadataAndUser(
|
||||||
user: ContextUser,
|
user: ContextUser,
|
||||||
|
@ -51,8 +51,10 @@ export function combineMetadataAndUser(
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function rawUserMetadata() {
|
export async function rawUserMetadata(db?: Database) {
|
||||||
const db = context.getAppDB()
|
if (!db) {
|
||||||
|
db = context.getAppDB()
|
||||||
|
}
|
||||||
return (
|
return (
|
||||||
await db.allDocs(
|
await db.allDocs(
|
||||||
getUserMetadataParams(null, {
|
getUserMetadataParams(null, {
|
||||||
|
@ -64,8 +66,12 @@ export async function rawUserMetadata() {
|
||||||
|
|
||||||
export async function syncGlobalUsers() {
|
export async function syncGlobalUsers() {
|
||||||
// sync user metadata
|
// sync user metadata
|
||||||
const db = context.getAppDB()
|
const dbs = [context.getDevAppDB(), context.getProdAppDB()]
|
||||||
const resp = await Promise.all([getGlobalUsers(), rawUserMetadata()])
|
for (let db of dbs) {
|
||||||
|
if (!(await db.exists())) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
const resp = await Promise.all([getGlobalUsers(), rawUserMetadata(db)])
|
||||||
const users = resp[0] as User[]
|
const users = resp[0] as User[]
|
||||||
const metadata = resp[1] as UserMetadata[]
|
const metadata = resp[1] as UserMetadata[]
|
||||||
const toWrite = []
|
const toWrite = []
|
||||||
|
@ -80,7 +86,8 @@ export async function syncGlobalUsers() {
|
||||||
if (!data._id) {
|
if (!data._id) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
const alreadyExisting = data.email && foundEmails.indexOf(data.email) !== -1
|
const alreadyExisting =
|
||||||
|
data.email && foundEmails.indexOf(data.email) !== -1
|
||||||
const globalId = getGlobalIDFromUserMetadataID(data._id)
|
const globalId = getGlobalIDFromUserMetadataID(data._id)
|
||||||
if (!users.find(user => user._id === globalId) || alreadyExisting) {
|
if (!users.find(user => user._id === globalId) || alreadyExisting) {
|
||||||
toWrite.push({ ...data, _deleted: true })
|
toWrite.push({ ...data, _deleted: true })
|
||||||
|
@ -90,4 +97,5 @@ export async function syncGlobalUsers() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
await db.bulkDocs(toWrite)
|
await db.bulkDocs(toWrite)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -122,11 +122,8 @@ export async function getGlobalUsers(
|
||||||
delete user.forceResetPassword
|
delete user.forceResetPassword
|
||||||
return user
|
return user
|
||||||
})
|
})
|
||||||
if (!appId) {
|
|
||||||
return globalUsers
|
|
||||||
}
|
|
||||||
|
|
||||||
if (opts?.noProcessing) {
|
if (opts?.noProcessing || !appId) {
|
||||||
return globalUsers
|
return globalUsers
|
||||||
} else {
|
} else {
|
||||||
// pass in the groups, meaning we don't actually need to retrieve them for
|
// pass in the groups, meaning we don't actually need to retrieve them for
|
||||||
|
|
Loading…
Reference in New Issue