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
+25
View File
@@ -9,6 +9,13 @@ export interface User {
customStatus: string | null;
isAdmin: boolean;
createdAt: number;
homeInstance: string | null;
replicatedInstances: ReplicatedInstance[];
}
export interface ReplicatedInstance {
domain: string;
username: string;
}
export type UserStatus = 'online' | 'idle' | 'dnd' | 'offline';
@@ -244,6 +251,7 @@ export interface RegisterRequest {
username: string;
password: string;
displayName?: string;
homeInstance?: string;
}
export interface LoginRequest {
@@ -283,6 +291,7 @@ export interface UpdateUserRequest {
avatar?: string;
customStatus?: string;
status?: UserStatus;
replicatedInstances?: ReplicatedInstance[];
}
export interface UpdateMemberRequest {
@@ -379,3 +388,19 @@ export interface InstanceStreamingLimits {
maxResolution: number;
maxFramerate: number;
}
// ─── Federation Types ──────────────────────────────────────────────────────
export interface InstanceInfoResponse {
name: string;
version: string;
registrationOpen: boolean;
}
export interface VerifyPasswordRequest {
password: string;
}
export interface VerifyPasswordResponse {
valid: boolean;
}