2023-09-10 16:33:38 -07:00

48 lines
1.2 KiB
TypeScript

import { default as PocketBase, default as pocketbaseEs } from 'pocketbase'
import {
CustomAuthStore,
SessionStateSaver,
} from '../providers/CustomAuthStore'
import { assertExists } from './assert'
import { die } from './die'
import { ConnectionConfig } from './ensureAdminClient'
export const pbClient = (
config: ConnectionConfig,
saver: SessionStateSaver,
) => {
const { host, session } = config
const client = new PocketBase(
host,
'en-US',
new CustomAuthStore(session, saver),
)
return client
}
export const isAdmin = async (client: pocketbaseEs) => {
if (!client.authStore.isValid) return false
const { model } = client.authStore
if (!model) return false
const res = await client.admins.getOne(model.id)
if (!res) return false
return true
}
export const adminPbClient = async (
config: ConnectionConfig,
saver: SessionStateSaver,
) => {
const client = pbClient(config, saver)
if (!client.authStore.isValid) {
die(`Must be logged in to PocketBase as an admin.`)
}
const { model } = client.authStore
assertExists(model, `Expected a valid model here`)
const res = await client.admins.getOne(model.id)
if (!res) {
die(`User must be an admin user.`)
}
return client
}