2022-11-23 19:25:20 +01:00
|
|
|
import fetch from "node-fetch"
|
2023-01-11 21:39:33 +01:00
|
|
|
import { constants, tenancy, logging } from "@budibase/backend-core"
|
2022-11-23 19:25:20 +01:00
|
|
|
import { checkSlashesInUrl } from "../utilities"
|
|
|
|
import env from "../environment"
|
2023-01-16 11:15:00 +01:00
|
|
|
import { SyncUserRequest, User } from "@budibase/types"
|
2022-11-23 19:25:20 +01:00
|
|
|
|
|
|
|
async function makeAppRequest(url: string, method: string, body: any) {
|
|
|
|
if (env.isTest()) {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
const request: any = { headers: {} }
|
|
|
|
request.headers[constants.Header.API_KEY] = env.INTERNAL_API_KEY
|
|
|
|
if (tenancy.isTenantIdSet()) {
|
|
|
|
request.headers[constants.Header.TENANT_ID] = tenancy.getTenantId()
|
|
|
|
}
|
|
|
|
if (body) {
|
|
|
|
request.headers["Content-Type"] = "application/json"
|
|
|
|
request.body = JSON.stringify(body)
|
|
|
|
}
|
|
|
|
request.method = method
|
2023-01-11 21:39:33 +01:00
|
|
|
|
|
|
|
// add x-budibase-correlation-id header
|
|
|
|
logging.correlation.setHeader(request.headers)
|
|
|
|
|
2022-11-23 19:25:20 +01:00
|
|
|
return fetch(checkSlashesInUrl(env.APPS_URL + url), request)
|
|
|
|
}
|
|
|
|
|
2023-01-13 15:45:04 +01:00
|
|
|
export async function syncUserInApps(userId: string, previousUser?: User) {
|
2023-01-16 11:15:00 +01:00
|
|
|
const body: SyncUserRequest = {
|
|
|
|
previousUser,
|
|
|
|
}
|
|
|
|
|
2022-11-23 19:25:20 +01:00
|
|
|
const response = await makeAppRequest(
|
|
|
|
`/api/users/metadata/sync/${userId}`,
|
|
|
|
"POST",
|
2023-01-16 11:15:00 +01:00
|
|
|
body
|
2022-11-23 19:25:20 +01:00
|
|
|
)
|
|
|
|
if (response && response.status !== 200) {
|
|
|
|
throw "Unable to sync user."
|
|
|
|
}
|
|
|
|
}
|