1
0
Fork 0
mirror of synced 2024-06-30 20:10:54 +12:00
budibase/packages/types/src/documents/account/account.ts

78 lines
1.8 KiB
TypeScript
Raw Normal View History

import { Hosting } from "../../sdk"
2022-05-05 19:32:14 +12:00
2022-05-24 09:14:44 +12:00
export interface CreateAccount {
email: string
tenantId: string
2022-05-05 19:32:14 +12:00
hosting: Hosting
2022-05-24 09:14:44 +12:00
authType: AuthType
// optional fields - for sso based sign ups
registrationStep?: string
// profile
tenantName?: string
name?: string
size?: string
profession?: string
}
export interface CreatePassswordAccount extends CreateAccount {
password: string
}
export const isCreatePasswordAccount = (
account: CreateAccount
): account is CreatePassswordAccount => account.authType === AuthType.PASSWORD
export interface Account extends CreateAccount {
// generated
accountId: string
createdAt: number
// registration
verified: boolean
2022-05-24 09:14:44 +12:00
verificationSent: boolean
// licensing
tier: string // deprecated
stripeCustomerId?: string
licenseKey?: string
}
export interface PasswordAccount extends Account {
password: string
}
export const isPasswordAccount = (
account: Account
): account is PasswordAccount =>
account.authType === AuthType.PASSWORD && account.hosting === Hosting.SELF
export interface CloudAccount extends Account {
password?: string
budibaseUserId: string
}
export const isCloudAccount = (account: Account): account is CloudAccount =>
account.hosting === Hosting.CLOUD
export const isSelfHostAccount = (account: Account) =>
account.hosting === Hosting.SELF
export const isSSOAccount = (account: Account): account is SSOAccount =>
account.authType === AuthType.SSO
export interface SSOAccount extends Account {
pictureUrl?: string
provider?: string
providerType?: string
oauth2?: OAuthTokens
thirdPartyProfile: any // TODO: define what the google profile looks like
}
export enum AuthType {
SSO = "sso",
PASSWORD = "password",
}
export interface OAuthTokens {
accessToken: string
refreshToken: string
2022-05-05 19:32:14 +12:00
}