From 84c935d4bd0cb6554f9ab45a780ad16523265a7b Mon Sep 17 00:00:00 2001 From: imbytecat Date: Thu, 19 Mar 2026 16:16:29 +0800 Subject: [PATCH] =?UTF-8?q?refactor(server):=20=E8=A7=84=E8=8C=83=E5=8C=96?= =?UTF-8?q?=20licence=20=E6=8C=81=E4=B9=85=E5=8C=96=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/server/src/server/db/schema/ux-config.ts | 5 ++- apps/server/src/server/ux-config.ts | 39 +++++++++++++++++-- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/apps/server/src/server/db/schema/ux-config.ts b/apps/server/src/server/db/schema/ux-config.ts index b17d8c6..0b08583 100644 --- a/apps/server/src/server/db/schema/ux-config.ts +++ b/apps/server/src/server/db/schema/ux-config.ts @@ -4,7 +4,10 @@ import { generatedFields } from '../fields' export const uxConfigTable = sqliteTable('ux_config', { ...generatedFields, singletonKey: text('singleton_key').notNull().unique().default('default'), - licence: text('licence'), + licencePayload: text('licence_payload'), + licenceSignature: text('licence_signature'), + licenceId: text('licence_id'), + licenceExpireTime: text('licence_expire_time'), fingerprint: text('fingerprint').notNull(), platformPublicKey: text('platform_public_key'), pgpPrivateKey: text('pgp_private_key'), diff --git a/apps/server/src/server/ux-config.ts b/apps/server/src/server/ux-config.ts index c48144a..c476357 100644 --- a/apps/server/src/server/ux-config.ts +++ b/apps/server/src/server/ux-config.ts @@ -32,17 +32,37 @@ export const ensureUxConfig = async (db: DB) => { .values({ singletonKey: UX_CONFIG_KEY, fingerprint, - licence: null, + licencePayload: null, + licenceSignature: null, + licenceId: null, + licenceExpireTime: null, }) .returning() return rows[0] as (typeof rows)[number] } -export const setUxLicence = async (db: DB, licence: string) => { +export const setUxLicence = async ( + db: DB, + licence: { + payload: string + signature: string + licenceId: string + expireTime: string + }, +) => { const config = await ensureUxConfig(db) - const rows = await db.update(uxConfigTable).set({ licence }).where(eq(uxConfigTable.id, config.id)).returning() + const rows = await db + .update(uxConfigTable) + .set({ + licencePayload: licence.payload, + licenceSignature: licence.signature, + licenceId: licence.licenceId, + licenceExpireTime: licence.expireTime, + }) + .where(eq(uxConfigTable.id, config.id)) + .returning() return rows[0] as (typeof rows)[number] } @@ -57,10 +77,21 @@ export const setUxPgpPrivateKey = async (db: DB, pgpPrivateKey: string) => { export const setUxPlatformPublicKey = async (db: DB, platformPublicKey: string) => { const config = await ensureUxConfig(db) + const shouldClearLicence = config.platformPublicKey !== platformPublicKey const rows = await db .update(uxConfigTable) - .set({ platformPublicKey }) + .set({ + platformPublicKey, + ...(shouldClearLicence + ? { + licencePayload: null, + licenceSignature: null, + licenceId: null, + licenceExpireTime: null, + } + : {}), + }) .where(eq(uxConfigTable.id, config.id)) .returning()