From 7685db03a2fb9db0b8b28e1693b589bafb2cff7c Mon Sep 17 00:00:00 2001 From: DecDuck Date: Sat, 16 Nov 2024 16:18:15 +1100 Subject: [PATCH] feat: introduction of 'system user' --- .../{app-setup.ts => 1.system-init.ts} | 24 +++++++++++++++++++ .../{user-setup.ts => 2.system-setup.ts} | 5 ++-- 2 files changed, 26 insertions(+), 3 deletions(-) rename server/server/plugins/{app-setup.ts => 1.system-init.ts} (52%) rename server/server/plugins/{user-setup.ts => 2.system-setup.ts} (86%) diff --git a/server/server/plugins/app-setup.ts b/server/server/plugins/1.system-init.ts similarity index 52% rename from server/server/plugins/app-setup.ts rename to server/server/plugins/1.system-init.ts index 6bfa3ff6..65a066a9 100644 --- a/server/server/plugins/app-setup.ts +++ b/server/server/plugins/1.system-init.ts @@ -12,4 +12,28 @@ export default defineNitroPlugin(async (nitro) => { nitro.hooks.hookOnce("close", async () => { await applicationSettings.waitForWrite(); }); + + // Ensure system user exists + // The system user owns any user-based code + // that we want to re-use for the app + // e.g. notifications + await prisma.user.upsert({ + where: { + id: "system", + }, + create: { + id: "system", + admin: true, + + displayName: "System", + username: "system", + email: "system@drop", + profilePicture: "", + }, + update: { + admin: true, + authMecs: { set: [] }, + clients: { set: [] }, + }, + }); }); diff --git a/server/server/plugins/user-setup.ts b/server/server/plugins/2.system-setup.ts similarity index 86% rename from server/server/plugins/user-setup.ts rename to server/server/plugins/2.system-setup.ts index 46783018..b5858ccc 100644 --- a/server/server/plugins/user-setup.ts +++ b/server/server/plugins/2.system-setup.ts @@ -5,6 +5,7 @@ export default defineNitroPlugin(async (nitro) => { if (userCount != 0) return; // This setup runs every time the server sets up, + // but has not been configured // so it should be in-place // Create admin invitation @@ -15,12 +16,10 @@ export default defineNitroPlugin(async (nitro) => { create: { id: "admin", isAdmin: true, - expires: new Date('4096-01-01') + expires: new Date("4096-01-01"), }, update: { isAdmin: true, }, }); - - });