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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user