feat: implement Phase 1 server-side federation groundwork

Add multi-instance support foundation: shared federation types
(ReplicatedInstance, InstanceInfoResponse, VerifyPasswordRequest),
database schema changes (home_instance, replicated_instances on users,
instance_name on settings), public instance info endpoint, auth
registration with homeInstance and username@domain collision fallback,
password verification endpoint, and replicatedInstances sync on user
profile. Extract duplicated sanitizeUser into shared utility across
8 server files.
This commit is contained in:
Jannis Braun
2026-03-02 23:15:43 +01:00
parent 37dc73231d
commit 22440b5a24
16 changed files with 195 additions and 121 deletions
+3
View File
@@ -9,6 +9,8 @@ export const users = sqliteTable('users', {
status: text('status').default('offline'),
customStatus: text('custom_status'),
isAdmin: integer('is_admin').default(0),
homeInstance: text('home_instance'),
replicatedInstances: text('replicated_instances').default('[]'),
createdAt: integer('created_at').notNull(),
});
@@ -177,6 +179,7 @@ export const serverFolderMembers = sqliteTable('server_folder_members', {
export const instanceSettings = sqliteTable('instance_settings', {
id: integer('id').primaryKey().default(1),
instanceName: text('instance_name').default('Backspace'),
maxBitrateKbps: integer('max_bitrate_kbps').notNull().default(20000),
minBitrateKbps: integer('min_bitrate_kbps').notNull().default(500),
bitrateStepKbps: integer('bitrate_step_kbps').notNull().default(500),