mirror of
https://github.com/pockethost/pockethost.git
synced 2025-03-30 15:08:30 +00:00
48 lines
1.2 KiB
TypeScript
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
|
|
}
|