diff --git a/.env-template b/.env-template index edc4c716..e2c2ed32 100644 --- a/.env-template +++ b/.env-template @@ -3,8 +3,8 @@ PUBLIC_APP_DOMAIN=pockethost.test PUBLIC_APP_DB=pockethost-central DAEMON_PB_BIN_DIR=`pwd`/packages/pocketbase/dist DAEMON_PB_DATA_DIR=`pwd`/.data -DAEMON_PB_USERNAME=#ADDME -DAEMON_PB_PASSWORD=#FIXME +DAEMON_PB_USERNAME=admin@pockethost.test +DAEMON_PB_PASSWORD=password DAEMON_PB_PORT=8090 DAEMON_IDLE_TTL=5000 DAEMON_PB_BACKUP_SLEEP=100 diff --git a/packages/daemon/src/migrate/withInstance.ts b/packages/daemon/src/migrate/withInstance.ts index a040b190..2a2914fc 100644 --- a/packages/daemon/src/migrate/withInstance.ts +++ b/packages/daemon/src/migrate/withInstance.ts @@ -32,6 +32,7 @@ export const withInstance = safeCatch( `***WARNING*** CANNOT AUTHENTICATE TO ${PUBLIC_APP_PROTOCOL}://${PUBLIC_APP_DB}.${PUBLIC_APP_DOMAIN}/_/` ) error(`***WARNING*** LOG IN MANUALLY, ADJUST .env, AND RESTART DOCKER`) + process.exit(-1) } finally { info(`Exiting process`) mainProcess.kill() diff --git a/packages/daemon/src/services/clientService/PbClient.ts b/packages/daemon/src/services/clientService/PbClient.ts index 8f0d552b..06a946f7 100644 --- a/packages/daemon/src/services/clientService/PbClient.ts +++ b/packages/daemon/src/services/clientService/PbClient.ts @@ -33,6 +33,11 @@ export const createPbClient = (url: string) => { client.admins.authWithPassword(email, password) ) + const createFirstAdmin = safeCatch( + `createFirstAdmin`, + (email: string, password: string) => client.admins.create(email, password) + ) + const applySchema = safeCatch( `applySchema`, async (collections: Collection_Serialized[]) => { @@ -50,6 +55,7 @@ export const createPbClient = (url: string) => { client, url, knex: rawDb, + createFirstAdmin, adminAuthViaEmail, applySchema, ...rpcApi, diff --git a/packages/daemon/src/services/clientService/clientService.ts b/packages/daemon/src/services/clientService/clientService.ts index 686a35a8..453c8e57 100644 --- a/packages/daemon/src/services/clientService/clientService.ts +++ b/packages/daemon/src/services/clientService/clientService.ts @@ -5,20 +5,29 @@ import { PUBLIC_APP_DOMAIN, PUBLIC_APP_PROTOCOL, } from '$constants' +import { schema } from '$src/migrate/schema' import { logger, mkSingleton } from '@pockethost/common' import { createPbClient } from './PbClient' export const clientService = mkSingleton(async (url: string) => { const { dbg, error } = logger().create(`client singleton`) const client = createPbClient(url) + try { + await client.applySchema(schema) + await client.adminAuthViaEmail(DAEMON_PB_USERNAME, DAEMON_PB_PASSWORD) dbg(`Logged in`) } catch (e) { - error( - `***WARNING*** CANNOT AUTHENTICATE TO ${PUBLIC_APP_PROTOCOL}://${PUBLIC_APP_DB}.${PUBLIC_APP_DOMAIN}/_/` - ) - error(`***WARNING*** LOG IN MANUALLY, ADJUST .env, AND RESTART DOCKER`) + try { + await client.createFirstAdmin(DAEMON_PB_USERNAME, DAEMON_PB_PASSWORD) + await client.adminAuthViaEmail(DAEMON_PB_USERNAME, DAEMON_PB_PASSWORD) + } catch (e) { + error( + `***WARNING*** CANNOT AUTHENTICATE TO ${PUBLIC_APP_PROTOCOL}://${PUBLIC_APP_DB}.${PUBLIC_APP_DOMAIN}/_/` + ) + process.exit(-1) + } } return { client,