51 lines
1.2 KiB
TypeScript
51 lines
1.2 KiB
TypeScript
import {
|
|
IdentityContext,
|
|
IdentityType,
|
|
User,
|
|
UserContext,
|
|
isCloudAccount,
|
|
Account,
|
|
AccountUserContext,
|
|
} from "@budibase/types"
|
|
import * as context from "."
|
|
|
|
export const getIdentity = (): IdentityContext | undefined => {
|
|
return context.getIdentity()
|
|
}
|
|
|
|
export const doInIdentityContext = (identity: IdentityContext, task: any) => {
|
|
return context.doInIdentityContext(identity, task)
|
|
}
|
|
|
|
export const doInUserContext = (user: User, task: any) => {
|
|
const userContext: UserContext = {
|
|
...user,
|
|
_id: user._id as string,
|
|
type: IdentityType.USER,
|
|
}
|
|
return doInIdentityContext(userContext, task)
|
|
}
|
|
|
|
export const doInAccountContext = (account: Account, task: any) => {
|
|
const _id = getAccountUserId(account)
|
|
const tenantId = account.tenantId
|
|
const accountContext: AccountUserContext = {
|
|
_id,
|
|
type: IdentityType.USER,
|
|
tenantId,
|
|
account,
|
|
}
|
|
return doInIdentityContext(accountContext, task)
|
|
}
|
|
|
|
export const getAccountUserId = (account: Account) => {
|
|
let userId: string
|
|
if (isCloudAccount(account)) {
|
|
userId = account.budibaseUserId
|
|
} else {
|
|
// use account id as user id for self hosting
|
|
userId = account.accountId
|
|
}
|
|
return userId
|
|
}
|